CakePHP使用数组设置重定向参数

时间:2013-12-03 20:03:53

标签: cakephp cakephp-2.0

我在CakePHP 2.4.2中编写了一些简单的重定向,遇到了一个让我感到难过的重定向。

如何使用相同的passArgs重定向到另一个视图?看起来它应该很简单,但我必须忽略一些东西。我试过这个:

$this->redirect(array_merge(array('action' => 'index',$this->params['named'])));

调试输出似乎是正确的:

array(
'action' => 'index',
(int) 0 => array(
    'this' => 'url',
    'and' => 'stuff'
)
)

我希望的结果是

view/this:url/and:stuff

重定向到

index/this:url/and:stuff

但现在它只是把我送到

index/

不确定我在这里缺少什么,也许我有更深层次的配置问题 - 虽然它不是一个非常复杂的应用程序。

3 个答案:

答案 0 :(得分:1)

Cake需要一个平坦的参数数组,因此您需要使用array_merge在侧面添加额外的数组。试试这个:

$this->redirect(array_merge(array('action' => 'index'), $this->params['named']));

...或使用原始变量$passedArgs

$this->redirect(array_merge(array('action' => 'index'), $this->passedArgs));

答案 1 :(得分:1)

对于传递的参数(数字键),使用array_merge。 但是,由于您使用名为params(具有基于字符串的键),因此您可以利用PHP基础知识:

$this->redirect(array('action' => 'index') + $this->request->params['named']));

这将添加来自命名参数的所有数组值,除了动作之外,这里已经使用了(因此不应该覆盖)。所以优先级也很明确。

答案 2 :(得分:0)

也许更好的解决方案将使用persist中的Router::connect()属性?