Читать условие правила продвижения - 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.

Другие вопросы по тегам