我在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/
不确定我在这里缺少什么,也许我有更深层次的配置问题 - 虽然它不是一个非常复杂的应用程序。
答案 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()
属性?