Читать условие правила продвижения - 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 ответа
Вы можете использовать функцию unserialize в 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.