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