2012-03-16 11 views
0

設定変数を取得してセッション用に変更する必要があります 私はこのObserverを持っており、setNode経由で変数を変更することができました。次の行でgetNode()を使ってその値を確認すると、値が正しく変更されています。 しかし、後で他のビューで私はMage :: getStoreConfig( 'oi_options/messages/active')をチェックし、再び0を持つようです。ご覧のとおり、cleanCache()とreinit()を配置します。私は彼らの両方とそれぞれを個別に試しました。 さらに、いくつかのブロックを表示するかどうかを判断するために、この変数もチェックするためにxmlレイアウトでいくつかのifconfigステートメントを使用しますが、どちらも機能しません。 提案がありますか?セッション中に設定変数を変更する方法

class Oi_Vendedor_Model_Observer { 

const RETAILER = 3; 

public function checkVendedor(Varien_Event_Observer $observer) { 
    $customerGroup = Mage::getSingleton('customer/session')->getCustomerGroupId(); 

    if(($customerGroup == self::RETAILER) && (Mage::getStoreConfig('oi_options/messages/active') == 0)) 
    { 
     Mage::getConfig()->setNode('default/oi_options/messages/active',1); 
     Mage::getConfig()->cleanCache(); 
     Mage::getConfig()->reinit(); 
    } 
    return $this; 
} 

}

この@Ben事前

+2

何らかの状態の永続化を試みているようです。これはMagentoフレームワークでこれを行う方法ではありません。達成したいことをコメント/編集できますか? – benmarks

+0

レイアウトがロードされる前にオブザーバが呼び出されていますか? – Zyava

答えて

0

のおかげで、私が達成したかったまさにです。私が最終的にこの疑似状態の永続性を維持するためにしたのは、チェックする必要がある値を持つ個人セッション変数をロードすることでした。バックエンドの設定変数をセッションからアクセスできるようにし、最終的にオブジェクトが自然に動作するように、その値を変更する方法があると思いました。 私は、セッションに管理者情報も保持しています。私はこれを行う方法を見つけることができませんでしたので、私は個人セッション変数のオプションに行く必要がありました。 Btw、それは今の魅力のように動作します。あなたのコメントをお寄せいただきありがとうございます。

1

これを行う簡単な方法が実際にあります。

たとえば、'my/config/key'の値を1に設定したとします。

は、いくつかのイベントの後、私は0に、このように値を設定します。

Mage::app()->getStore()->setConfig('my/config/key', 0); 

そして、この値にアクセスすると、スクリプトの実行が終了するまで0を返します。

Mage::getStoreConfig('my/config/key'); //return 0 

でただし値データベースはまだ1です。

XMLレイアウトのifconfigに影響を与えるために、私はセッションでこのソリューションを使用しませんでした。

関連する問題