阅读促销规则条件 - Magento

时间:2012-05-30 08:42:55

标签: php 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

3 个答案:

答案 0 :(得分:3)

您可以使用php的unserialize函数将其转换为可行的数组。

试试这个:

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

之前我曾在博客中介绍过这些内容的工作原理,虽然我的帖子是关于创建规则,但它仍然可以解释一下您如何理解条件。

Here's my post

希望它有所帮助!

答案 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内置函数。