2

プログラムで、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_マルタ

4

3 に答える 3

5

phpのunserialize関数を使用して、これを実行可能な配列に変換できます。

これを試して:

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

私は以前にこれらがどのように機能するかについてブログを書きました、そして私の投稿はルールの作成についてですが、それでもあなたが条件を理解するようになるかもしれない方法について少し説明しています。

これが私の投稿です

それが役に立てば幸い!

于 2012-05-30T08:58:41.880 に答える
1

unserialize($rule->getConditionsSerialized())トリックをしました!

それが他の誰かに役立つことを願っています!

于 2012-05-30T08:56:34.213 に答える
1

Magento は、それ自体の条件とアクションを非シリアル化する関数を既に実装しています。それを使用するだけです。

$conditions = Mage::getModel('salesrule/rules')->load($ruleId)->getConditions();

を呼び出すたび->getConditions()に、実行中のルール オブジェクト内のより深い条件が得られます。

たとえば、最初に呼び出すと、すべての内部条件のデフォルト ラッパーである の->getConditions()オブジェクト タイプが返されます。Mage_SalesRule_Model_Rule_Condition_Combine呼び出しを再度チェーンすると->getConditions()->getConditions()、条件オブジェクトの [X] を含む配列が取得されます。各オブジェクトは、adminhtml インターフェイスを使用して作成したときに宣言したタイプです。

unserialize()Magento 組み込み関数の使用を避け、使用を開始します。

于 2016-05-16T19:26:51.350 に答える