在module.config.php中,我添加了:
'logout' => array(
'type' => 'literal',
'options' => array(
'route' => '/logout',
'defaults' => array(
'__NAMESPACE__' => 'Users\Controller',
'controller' => 'Index',
'action' => 'logout',
),
),
),
在IndexController.php中添加了:
public function logoutAction() {
$this->getSessionStorage()->forgetMe();
$this->getAuthService()->getStorage()->clear("email");
return $this->redirect()->toRoute('users', array('controller' => 'Login', 'action' => 'index'));
}
并始终重定向到http://localhost/users但应该http://localhost/users/login/index
答案 0 :(得分:0)
当您使用Zend\Mvc\Controller\Plugin\Redirect::toRoute()
时,第一个参数是您在module.config.php
中定义的路线的名称。例如,您提到的路线定义为logout
。
'logout' => array(
'type' => 'literal',
'options' => array(
'route' => '/logout',
'defaults' => array(
'__NAMESPACE__' => 'Users\Controller',
'controller' => 'Index',
'action' => 'logout',
),
),
),
因此,要重定向到此路线,请使用以下行。
$this->redirect()->toRoute('logout')
没有必要将控制器和/或操作作为第二个参数提供,因为您已经在路由的options
配置了该参数。