Magento会话和cookie的使用

时间:2018-09-13 20:09:20

标签: magento

我正在尝试在当前会话中保存URL参数值和cookie。我创建了一个从controller_front_send_response_before事件中触发的观察器,因为我希望它在每个页面上执行,以防万一提供了一个新值来替代前一个值。

这是我的观察者:

class Acme_Save_Model_Observer
{
    public function eventHandler($observer)
        {
        $request = $observer->getEvent()->getData("front")->getRequest();
        $id = $request->id;

        if ( isset($id) && !is_null($id) ) {
            $_SESSION["id"] = $id;
            $period = 1209600;  // 60s * 60m * 24h * 14d
            Mage::getModel('core/cookie')->set('id',$id,$period);
            Mage::log("ID value $id set in session+cookie");
        } else {
            $id = Mage::getModel('core/cookie')->get('id');
            Mage::log("ID cookie value: $id" );
            if ( isset($id) && !is_null($id) ) {
                $_SESSION["id"] = $id;
            }
        }
        Mage::log("ID session value: " . $_SESSION["id"] );
    }
}

当我用http://acme.com/?id=blort调用它时,system.log显示它已被设置:

DEBUG (7): ID value blort set in session+cookie
DEBUG (7): ID session value: blort

奇怪的是,从这一点开始,即使新的请求URL不包含该参数,每次都会记录相同的消息。单击页面上的另一个链接或仅输入http://acme.com/会在上面记录相同的 set 消息,而不是在else子句中显示与我一样的“ ID cookie值:blort ”没有查询字符串的请求将会期望。我在这里缺少明显的东西还是不了解?任何帮助或建议表示赞赏。

0 个答案:

没有答案