2011-01-17 17 views
1

Magentoのヘルパーの中に顧客属性が1であるかどうかを返す関数があります。私はMage_Core_Block_Templateを拡張するクラスからこの関数を呼び出すときMagentoウェブサイトの顧客セッションが異なる

がここに今私のヘルパークラス

class Nie_Nie_Helper_Data extends Mage_Core_Helper_Abstract { 
    public function isNieAdmin() { 
     if(Mage::getSingleton('customer/session')->getCustomer()->getNieAdmin() == 1) { 
      return true; 
     } else { 
      return false; 
     } 
    } 
} 

で、すべてが正常に動作するようです。しかし、これを私のコントローラーの中で使用しようとすると、動作しません。実際に私がMage::getSingleton('customer/session')->getCustomer()->debug()をするときに返される唯一の変数はwebsite_idです。

これを動作させるために私が何をしなければならないか誰にも分かりますか?

答えて

2

私はセッションを自分でロードしなければならなかったようです。

Mage::getSingleton('core/session', array('name' => 'frontend')); 

私はこの機能に役立つことを望んでいました。

2

コントローラの時点で、セッションオブジェクトはまだ初期化されていません(セッション変数は必須です)ので、空のモデルを返します。私の推測では、website_idは意図的に顧客オブジェクトの作成時にデフォルトとして動作するように設定されています。

$_SESSION['customer']に直接アクセスして必要なものを見つけることはできますが、それは面倒です。代わりに、後で発生するイベントであなたが望むことをすることができます。

誰かが私よりも良い答えを思い付くことを願っています。

+0

これは非常に奇妙です。私は面倒なやり方で上記のことをしているわけではありませんが、コントローラがセッションを利用できないことは奇妙です。私はVarienがそれを修正するように感じる。 –

+1

$ _SESSION変数は、MagentoのSingletonと同じデータを取得した場合と同じです。 –

関連する問題