Плагин Zend Framework - predispatch()
Я написал плагин с методом predispatch() для проверки прав доступа на каждый запрос контроллера. Я сделал плагин как:
Класс My_Plugin_Checklogin extends Zend_Controller_Plugin_Abstract {открытая функция preDispatch () {
if (isset($_SESSION['Zend_Auth_Static'])) {
//no login
$request = $this->getRequest();
//the request
$request->setModuleName('default');
$request->setControllerName('index');
$request->setActionName('index');
//send to default/login/index
}
}
}
Он вызывает predispatch() перед каждым запросом контроллера.
Но также не позволяя мне войти в систему. Всегда оставляю меня на странице входа в систему из-за метода предварительной отправки. Как мне установить метод предварительной отправки.
Пожалуйста помоги.
1 ответ
Решение
Вероятно, самый простой способ пропустить этот плагин для определенного контроллера (и / или действия) - это добавить условное выражение в начале плагина. preDispatch()
метод
public function preDispatch(Zend_Controller_Request_Abstract $request)
{
if ($request->getModuleName() == 'default'
&& $request->getControllerName() == 'login'
&& $request->getActionName() == 'index') {
return ;
}
if (isset($_SESSION['Zend_Auth_Static'])) {
// your code goes here
}
}