我需要以编程方式阅读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
答案 0 :(得分:3)
您可以使用php的unserialize函数将其转换为可行的数组。
试试这个:
$conditions = unserialize($rule->getConditionsSerialized());
print_r($conditions);
之前我曾在博客中介绍过这些内容的工作原理,虽然我的帖子是关于创建规则,但它仍然可以解释一下您如何理解条件。
希望它有所帮助!
答案 1 :(得分:1)
unserialize($rule->getConditionsSerialized()
)做了伎俩!
希望它可以帮助别人!
答案 2 :(得分:1)
Magento已经实现了一个函数来为自己反序列化条件和操作,你所要做的就是使用它。
$conditions = Mage::getModel('salesrule/rules')->load($ruleId)->getConditions();
每次调用->getConditions()
都会让您在执行规则对象时获得更深入的条件。
例如,第一次调用->getConditions()
时,它将返回一个对象类型Mage_SalesRule_Model_Rule_Condition_Combine
,它是所有内部条件的默认包装器。如果再次链接调用->getConditions()->getConditions()
,您将获得一个包含[X]条件对象的数组,每个类型都是在通过adminhtml接口创建时声明的类型。
避免使用unserialize()
并开始使用Magento内置函数。