質問

単一のスクリプトの期間のためにMagento構成オプションを設定することは可能ですか?

私はMagentoでプログラム的かつ再帰的に注文を作成しようとしています。有効にしたい Flat Rate Shipping メソッドとコストを設定します 5.00, 、 例えば。スクリプトが実行されたら、DBから通常どおりPersistenceを介して値を設定したいと思います。

私は基本的な関数を使用して、どの反復にあるかを判断しています。最初の場合は、配送方法を設定します。スクリプトはAjax経由で呼び出されます。

...
try {
    if (isFirstIteration($_iteration)) {
        $_flatShipping = Mage::getStoreConfig('carriers/flatrate/active', $_storeId);
        if ($_flatShipping == 0) {
            Mage::getConfig()->setNode('carriers/flatrate/active', '1');
            Mage::getConfig()->setNode('carriers/flatrate/price', '5.00');
        }
    }
} catch(Exception $e) {
    $html .= '<div class="error">Error: ' . $e->getMessage() . '</div>';
}
...

そうです いいえ 仕事; Magentoは例外をスローします Please specify a shipping method 見積もりで保存します。

ただし、DBで配送方法を設定できます。これ します 仕事:

...
try {
    if (isFirstIteration($_iteration)) {
        $_flatShipping = Mage::getStoreConfig('carriers/flatrate/active', $_storeId);
        if ($_flatShipping == 0) {
            $_mageConfig = new Mage_Core_Model_Config();
            $_mageConfig->saveConfig('carriers/flatrate/active', '1', 'default', 0);
            $_mageConfig->saveConfig('carriers/flatrate/price', '5.00', 'default', 0);
            Mage::getConfig()->reinit();
            Mage::app()->reinitStores();
        }
    }
} catch(Exception $e) {
    $html .= '<div class="error">Error: ' . $e->getMessage() . '</div>';
}
...

私はマゼントのものを推測しています setNode 私が思うように機能しません。このような注文を作成するために私をbashingりましたことを除いて、どんな情報も役立ちます:)ありがとう。

役に立ちましたか?

解決

の問題 setNode() 構成キャッシュを更新しないということです Mage_Core_Model_Store. 。これはMagentoキャッシュではなく、ストア固有の構成のためのストアの初期化の実行時に実行時に、およびグローバルまたはWebサイト固有の構成の構成値が読み取られるときに入力されるPHPアレイです。

それで setNode() 以前に読まれた特定の値や値では機能しません。

しかし、ノードとキャッシュ値を設定する方法があります。

Mage::app()->getStore()
    ->setConfig('section/group/field', $value);

他のヒント

あなたは正しいです。 setNode() 完全なXPathを使用します。絶対パスを使用して保存データを設定する必要があります。

stores/[code]/carriers/flatrate/active
ライセンス: CC-BY-SA帰属
所属していません magento.stackexchange
scroll top