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

问题描述 投票:0回答:3

我正在 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/

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

php cakephp cakephp-2.0
3个回答
1
投票

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

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

这会添加命名参数中除操作之外的所有数组值,该操作已在此处使用(因此无论如何不应被覆盖)。所以优先级也很明确。


1
投票

Cake 需要一个扁平的参数数组,因此您需要使用

array_merge
在其侧面添加额外的数组。试试这个:

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

...或使用原始变量

$passedArgs
:

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

0
投票

也许会使用

persist
中的
Router::connect()
属性更好的解决方案?

© www.soinside.com 2019 - 2024. All rights reserved.