4

在进行重定向的控制器操作中,我使用了这个:

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

或这个

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

当我通过重定向传递数据时,我使用这个:

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

但我找不到如何通过“this-redirect-array”表示法传递“myargument”。
我不想使用它,因为一些路由问题:

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

我需要这样的东西:

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

3 回答 3

17

Cake 确实支持使用问号的查询参数,如下所示:

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

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

但就像des说的那样做会更好:

$this->redirect(array(
    'controller' => 'tools', 'action' => 'index', 'myArgument' => 12
));
于 2012-06-25T15:22:21.050 回答
3

这应该有效:

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

看看CakePHP Cookbook - Controller::redirect

访问请求参数

$this->request['myArgument'];
$this->request->myArgument;
$this->request->params['myArgument'];
于 2012-06-24T11:48:25.037 回答
0

使用它来重定向:

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

和 Router::connectNamed() 到 router.php 以将分隔符从“:”更改为“=”:

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

);

于 2015-01-20T03:05:56.157 回答