读取升级规则条件 - Magento


Read promotion rule condition - Magento

我需要以编程方式读取magento中购物车价格规则的条件。

Mage_SalesRule_Model_Rule有一个方法getConditionsSerialized()它确实提供了条件,但至少可以说以一种神秘的方式,例如:

a:7:{s:4:"type";s:32:"salesrule/rule_condition_combine";s:9:"attribute";N;s:8:"operator";N;s:5:"value";s:1:"1";s:18:"is_value_processed";N;s:10:"aggregator";s:3:"all";s:10:"conditions";a:1:{i:0;a:5:{s:4:"type";s:32:"salesrule/rule_condition_address";s:9:"attribute";s:13:"base_subtotal";s:8:"operator";s:2:">=";s:5:"value";s:1:"1";s:18:"is_value_processed";b:0;}}}

有谁知道如何以更人道的方式阅读病情?我希望能够读取某些属性。

谢谢一堆!

Krt_Malta

您可以使用 php 的反序列化函数将其转换为可行的数组。

试试这个:

$conditions = unserialize($rule->getConditionsSerialized());
print_r($conditions);

我之前在博客上写过这些是如何工作的,虽然我的帖子是关于创建规则的,但它仍然解释了一些关于你如何理解条件的信息。

这是我的帖子

希望对您有所帮助!

unserialize($rule->getConditionsSerialized() ) 成功了!

希望它对其他人有所帮助!

Magento已经实现了一个函数来为自己反序列化条件和操作,您所要做的就是使用它。

$conditions = Mage::getModel('salesrule/rules')->load($ruleId)->getConditions();

每次调用->getConditions()都会在执行规则对象中获得更深层次的条件。

例如,第一次调用->getConditions()它将返回对象类型Mage_SalesRule_Model_Rule_Condition_Combine这是所有内部条件的默认包装器。如果再次链接调用->getConditions()->getConditions()将得到一个包含 [X] 条件对象的数组,每个条件对象都是您在通过 adminhtml 接口创建它们时声明的类型。

避免使用unserialize()并开始使用Magento内置函数。