Сеанс Magento и использование куки - PullRequest
0 голосов
/ 13 сентября 2018

Я пытаюсь сохранить значение параметра 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 выше вместо " ID cookie cookie: blort " в предложении else, как и следовало ожидать отзапрос без строки запроса.Я что-то упускаю из виду или не понимаю чего-то здесь?Любая помощь или предложения приветствуются.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...