ZF2重定向到控制器操作的路由

时间:2015-11-26 11:49:31

标签: zend-framework2

在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

1 个答案:

答案 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配置了该参数。