CakePHP passing arguments in Controller::redirect

自古美人都是妖i 提交于 2020-01-12 09:09:59

问题


In controller actions to make redirect I use this:

$this->redirect(array('controller' => 'tools', 'action' => 'index'));

or this

$this->redirect('/tools/index');

And when I pass data with redirect I use this:

$this->redirect('tools/index/?myArgument=12');

But I couldn't find how to pass "myargument" by "this-redirect-array" notation.
I don't want to use this because some routing issues:

$this->redirect(array('controller' => 'tools', 'action' => 'index', "myArgument"));

I need something like this:

$this->redirect(array('controller' => 'tools', 'action' => 'index', "?myArgument=12"));

回答1:


Cake does indeed support query arguments using the question mark, like this:

$this->redirect(array(
    'controller' => 'tools', 'action' => 'index', '?' => array(
        'myArgument' => 12
    )
));

http://book.cakephp.org/2.0/en/development/routing.html#reverse-routing

But it would be better to just do, like des said:

$this->redirect(array(
    'controller' => 'tools', 'action' => 'index', 'myArgument' => 12
));



回答2:


This should work:

$this->redirect(array('controller' => 'tools', 'action' => 'index', 'myArgument' => 12));

Take a look at CakePHP Cookbook - Controller::redirect

Accessing request parameters:

$this->request['myArgument'];
$this->request->myArgument;
$this->request->params['myArgument'];



回答3:


Using this to redirect:

$this->redirect(array('controller' => 'tools', 'action' => 'index', 'myArgument' => 12));

And Router::connectNamed() to router.php to change separator from ":" to "=":

Router::connectNamed(
    array('myArgument' => array('action' => 'index', 'controller' => 'tools')), array('default' => false, 'greedy' => false, 'separator' => '=')

);



来源:https://stackoverflow.com/questions/11177154/cakephp-passing-arguments-in-controllerredirect

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!