问题
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