スクリプトの期間のみでMagento設定データを設定します
-
16-10-2019 - |
質問
単一のスクリプトの期間のために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