使用重定向传递参数,而不将它们放在Zend Framework 2中的url中

时间:2013-06-28 07:01:57

标签: php zend-framework2

有没有办法在ZF2中传递带有重定向的参数,如

return $this->redirect()->toRoute('account', array('test' => 'ok'));

如果可能,我如何获得test参数?

PS。 test不是映射到路由的参数。 account是我的控制器,它有默认操作,因此我无需在redirect中指定操作。

1 个答案:

答案 0 :(得分:1)

我认为你可以做到以下几点: 假设您的模块是Myaccount,您的控制器是AccountController,您的操作是索引(我假设您的默认操作)。所以在你的module.config.php中你会有这样的东西:

return array(
'controllers' => array(
    'invokables' => array(
        'Account' => 'Myaccount\Controller\AccountController', 

然后在某些操作中,您可以使用ZF2样式的重定向传递参数,如下所示:

return $this->redirect()->toRoute('account', array(
                   'controller' => 'account',
                   'action' =>  'index',
                       'test' => $testVal  // in this case "okay"
                   )); 

哦,是的,你在module.config.php中的路线也很重要:

'router' => array(
    'routes' => array(
        'account' => array(
            'type'    => 'segment',
            'options' => array(
                'route'    => '/account[/:action][/:test]',

因为这就是ZF2如何知道去哪里以及附加什么,在我们的例子中它会导致“../account/index/test/okay”,因为我们的“测试”价值还可以。

希望有所帮助:)