У меня проблема с обработкой значений сеанса Symfony.
По сути, проблема в том, что у меня активирован фильтр действий, который принимает значения модуля и выполненного действия и сохраняет их в суперглобальном сеансе.
Это код моего фильтра:
<------ НАЧАТЬ КОД ---------------->
class getPrevModuleActionFilter extends sfFilter
{
public function execute ($filterChain)
{
//---------------Code to execute *BEFORE THE ACTION* execution---------------
if ($this->isFirstCall()) # Execute this filter only once
{
// Filters don't have direct access to request & user objects => Use context object to get them
$request = $this->getContext()->getRequest();
$user = $this->getContext()->getUser();
if($request->getParameter('action') !== "setCulture")
{
$_SESSION['prev_module'] = "M=".$request->getParameter('module');
$_SESSION['prev_action'] = "A=".$request->getParameter('action');
}
}
//---------------Execute next filter in the chain---------------
$filterChain->execute();
//---------------Code to execute *AFTER THE ACTION* execution, before the rendering---------------
//(...)
}
}
<------ КОНЕЦ КОДА ---------------->
Странная вещь заключается в том, что если я выполню print_r на переднем веб-контроллере в самую последнюю минуту, я вижу, что:
Когда действие, которое не является 'setCulture', все идет хорошо (т.е. сеанс получает предыдущий модуль и действие, как и должно)
Когда выполняется действие 'setCulture': Symfony сохраняет следующие значения в сеансе:
Array (
[prev_module] => M=
[prev_action] => A=
(etc)
)
то есть он теряет значения сессии для этих 2 записей.
Я пытался использовать разные пространства имен, я пытался использовать setAttribute symfony из sfUser для обработки значений сеанса. В конце я попробовал сырую обработку сессий PHP. По-видимому, кажется, что методы закрытия фабрик, связанных с пользователем и хранением значений сеанса, портят значения сеанса!
Мне нужна ваша помощь, пожалуйста.
СПЕЦИФИКАЦИЯ:
- версия Symfony: 1.4.6
- PHP: 5,3
- У меня отключен кэш Symfony
- Я запускаю код с контроллером frontend_dev.php