Диспетчерская отправка Phalcon, не имеющая эффекта

У меня есть компонент, настроенный как beforeDispatch слушатель. Этот компонент проверяет, была ли форма отправлена ​​POST, а затем проверяет, что токен CSRF был правильно отправлен. Если нет, то он должен перейти на специальную страницу уведомлений CSRF. Я специально хочу сделать переадресацию, а не перенаправление, чтобы у пользователей была возможность сообщить, какую страницу они посетили.

Вот мой код:

public function beforeDispatch(\Phalcon\Events\Event $Event,\Phalcon\Mvc\Dispatcher $Dispatcher){
if($this->request->isPost()){
if(!$this->checkToken()){
echo 'before';
$Dispatcher->forward(['controller'=>'index','action'=>'csrf']);
echo 'after';
exit();
}
}
}

Все, что я получаю, это страница, которая отображает «до того». Если я возьму эти echos, я просто получаю пустую страницу. Я могу посетить /index/csrf/ вручную, и он отображает страницу, которую я хочу.

Почему запрос не пересылается? Это из цикла отправки?

0

Решение

Вы закодировали:

exit();

?

Я не уверен, что вы можете использовать пересылку здесь, если диспетчер еще не знает, существует ли контроллер и действие в цикле отправки. https://docs.phalconphp.com/en/3.2/dispatcher#dispatch-loop

Но я думаю, что вы можете перехватывать и контролировать, какой класс контроллера и какое действие должен выполнять диспетчер.

$dispatcher->setModuleName(<your module nam if you have one>);
$dispatcher->setNamespaceName(<your controller class>);
$dispatcher->setActionName(<your action name>);

Проверьте документы на диспетчерская петля

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector