客户会话是自定义模块的Magento空(customer session is empty in c

2019-10-18 03:39发布

我做了它使用的客户会话的自定义模块,但它的奇怪,在现场直播其不返回客户数据。 我曾尝试以下方法:

$sessCustomer = Mage::getSingleton('customer/session', array('name' => 'frontend'));
    echo '<pre>';print_r($sessCustomer->getCustomer()->getData()); echo '</pre>';exit;

返回:

Array
(
    [website_id] => 1
)

如果我打印的客户会话:

Mage::getSingleton('customer/session')->getData();

这返回(精确的输出):

     array(
[_session_validator_data] => Array
        (
            [remote_addr] => 58.65.183.10
            [http_via] => 
            [http_x_forwarded_for] => 58.65.183.10
            [http_user_agent] => Mozilla/5.0 (X11; Ubuntu; Linux i686; rv:16.0) Gecko/20100101 Firefox/16.0
        )

    [session_hosts] => Array
            (
                [bestevalue.info] => 1
            )
    [messages] => Mage_Core_Model_Message_Collection Object
            (
                [_messages:protected] => Array
                    (
                    )

                [_lastAddedMessage:protected] => 
            )
    [id] => 
)

我在这里耗尽,我登录后,可以看到客户仪表盘,上面有客户的信息,但没有能够使用该会话在我的自定义模块,请指导我如何解决这个问题。

更新:

我已经检查/app/etc/local.xml该会话类型的文件

<session_save><![CDATA[files]]></session_save>

那么有没有用php提取会话信息的不同方法? 我究竟做错了什么?

更新2:

我用的路由器,以及做出漂亮的URL public function match(Zend_Controller_Request_Http $request)

在这个动作的开始,我把

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

但仍然无法与路由器的工作没有一个是工作,例如直接访问的操作:

site.com/module/controller/action

它的工作原理,但不与路由器。 有什么想法吗? 谢谢,

Answer 1:

解决方法很简单:

private function _getCustomerSession() {
    Mage::getSingleton('core/session', array('name' => 'frontend'));
    return Mage::getSingleton('customer/session');
}

这将初始化会话并将其返回。 这样调用这个函数:

$this->_getCustomerSession()->getCustomer()

它将有可用的数据。

更新的Google和未来的参考 :我今天再有这个问题,我自己的解决方案没有工作(如题)。 进一步调查显示,我已经覆盖了preDispatch()的功能在我的自定义模块,以检查模块是在后端启用,如果没有重定向错误主页。 在这种情况下,解决方案是-obviously-呼叫parent::preDispatch();



Answer 2:

这个问题的答案是,最有可能的控制器要扩展您的自定义模块操作不正确的类。 我也只是有同样的问题,一个小时后,左右扑我的头在屏幕上,我意识到我的控制器延长此

Mage_Core_Controller_Varien_Action

而不是这个

Mage_Core_Controller_Front_Action

我不知道没有进入这些主要的区别是什么,但我知道你不会有延伸的第一类客户会话!



Answer 3:

我遭受没有得到我的自定义模块内部的客户会话。 它在我的本地做工精细,但在服务器我能不能够得到客户的会话。

我已经在config.xml中更换frontname找到了解决办法,

我刚改变<frontName>votingsytem</frontName> to <frontName>vote</frontName>

我得到了客户的会话它活的服务器做工精细。

我希望这将是有益的。

之前:

<frontend>
  <routers>
     <votingsytem>
        <use>standard</use>
        <args>
           <module>Vgs_Votingsytem</module>
           <frontName>votingsytem</frontName>
        </args>
     </votingsytem>        
  </routers>
  <layout>
     <updates>
        <votingsytem>
           <file>votingsytem.xml</file>
        </votingsytem>
     </updates>
  </layout>

后:

<frontend>
  <routers>
     <votingsytem>
        <use>standard</use>
        <args>
           <module>Vgs_Votingsytem</module>
           <frontName>vote</frontName>
        </args>
     </votingsytem>        
  </routers>
  <layout>
     <updates>
        <votingsytem>
           <file>votingsytem.xml</file>
        </votingsytem>
     </updates>
  </layout>



Answer 4:

所以,我花了3个多小时google搜索的原因,并在最后我随机决定免去控制器构造函数重载和是的!会回来!

然而,我是正确重写它通过调用父类的构造!



文章来源: customer session is empty in custom module magento