Почему я не могу получить доступ к глобальной переменной в моем наблюдателе?
У меня есть пользовательский модуль. В его контроллере я установил глобальную переменную, как показано ниже
public function someAction()
{
if (<some_condition_met>) {
$id = 12;
$item = Mage::getModel('mymodel/entity')->load($id);
Mage::register('my_entity', $item); //registering global variable
$this->_redirect('customer/account/login');
return;
}
}
Сейчас я наблюдаю за событием controller_action_postdispatch_customer_account_loginPost
. Мне нужно проверить свою глобальную переменную там. Поэтому в своем наблюдателе я попробовал это.
public function myObserver()
{
if (<some_condition_met>) {
$item = Mage::registry('my_entity');
var_dump($item);
die();
}
}
Но он выводит
NULL
Почему я не могу получить глобальную переменную в этом наблюдателе?
Я на 100% уверен, что мой контроллер успешно зарегистрирует это значение. Я пытаюсь передать статическое значение. Это тоже не работает.
Примечание: когда мы пытаемся получить глобальную переменную, заданную контроллером внутри блока, она обязательно вернет данные. Здесь я предполагаю, что я не получаю выходных данных, потому что я пытаюсь получить глобальную переменную во время другого действия контроллера. Я не уверен в этом пункте. Однако это так кажется.
1 answers
Реестр действителен только для одного запроса. Если вы выполните $this->_redirect()
, начнется новый запрос, так что реестр будет сброшен. Вы должны использовать файлы cookie, если хотите хранить информацию по нескольким запросам.
Другая возможность - просто перенаправить на другой контроллер, но это может быть не то, чего вы хотите достичь.