我在Magento的Helper中有一个函数,它返回一个customer属性是否等于一个。
这是我的助手课程
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_Core_Block_Template的类中调用此函数时,一切似乎都正常。但是,当我尝试在我的一个控制器中使用它时,它不起作用。事实上,当我Mage::getSingleton('customer/session')->getCustomer()->debug()
时,返回的唯一变量是website_id。
有人知道我必须做些什么才能让它发挥作用吗?
答案 0 :(得分:2)
在控制器时,会话对象尚未初始化(尽管会话变量必须是),因此它返回一个空白模型。我的猜测是website_id
是在创建客户对象时故意设置的,以作为默认值。
您可以直接访问$_SESSION['customer']
以找到您需要的内容,但这很麻烦。另一种方法是在稍后发生的事件中做你想做的事。
我希望有人能提出比我更好的答案。
答案 1 :(得分:2)
好吧,看起来我必须自己加载会话。我必须在我的功能中加入以下内容:
Mage::getSingleton('core/session', array('name' => 'frontend'));
希望这有帮助。