在Magento网站的不同部分,客户会话是不同的

在Magento网站的不同部分,客户会话是不同的,magento,Magento,我在Magento中的Helper中有一个函数,用于返回customer属性是否等于1 这是我的助手课 class Nie_Nie_Helper_Data extends Mage_Core_Helper_Abstract { public function isNieAdmin() { if(Mage::getSingleton('customer/session')->getCustomer()->getNieAdmin() == 1) {

我在Magento中的Helper中有一个函数,用于返回customer属性是否等于1

这是我的助手课

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_模板的类调用这个函数时,一切似乎都正常。然而,当我试图在我的一个控制器中使用它时,它不起作用。事实上,当我执行
Mage::getSingleton('customer/session')->getCustomer()->debug()
时,返回的唯一变量是网站id


有人知道我必须做什么才能让它工作吗?

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

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


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

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

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


我希望有人能想出一个比我更好的答案。

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

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

希望这能有所帮助。

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

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

希望这能有所帮助。

真奇怪。虽然我并没有凌驾于杂乱无章的做事方式之上,但我确实发现在控制器中没有会话是很奇怪的。我觉得Varien应该解决这个问题。$\u SESSION变量与if相同,我提取的数据与Magento的Singleton相同。这太奇怪了。虽然我并没有凌驾于杂乱无章的做事方式之上,但我确实发现在控制器中没有会话是很奇怪的。我觉得Varien应该解决这个问题。$\u SESSION变量与if相同,我提取的数据与Magento的Singleton相同。