我需要以编程方式读取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内置函数。