客户会话在Magento网站的不同部分有所不同

时间:2011-01-17 22:34:37

标签: magento

我在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。

有人知道我必须做些什么才能让它发挥作用吗?

2 个答案:

答案 0 :(得分:2)

在控制器时,会话对象尚未初始化(尽管会话变量必须是),因此它返回一个空白模型。我的猜测是website_id是在创建客户对象时故意设置的,以作为默认值。

您可以直接访问$_SESSION['customer']以找到您需要的内容,但这很麻烦。另一种方法是在稍后发生的事件中做你想做的事。

我希望有人能提出比我更好的答案。

答案 1 :(得分:2)

好吧,看起来我必须自己加载会话。我必须在我的功能中加入以下内容:

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

希望这有帮助。

相关问题