我知道这是一个非常简单的事情,我真的应该知道,但我正在尝试学习cakephp而没有做过多的PHP之前。我被告知这是一个愚蠢的想法,但我这样做很有趣,所以我正在做。
我想将一个数组从一个控制器动作传递给另一个控制器动作,然后将其传递给视图。我有:
sponges_controller.php
$info = $this->data;
$this->redirect(array('controller'=>'baths', 'action'=>'dashboard', $info));
baths_controller.php
function dashboard($info) {
$this->set('info', $info);
}
然后
<?php echo debug($info); ?>
仪表板视图中的。
我尝试了各种方法,但无法使其发挥作用。它只是打印出Array()
Plz帮助我! :)朱莉娅
答案 0 :(得分:2)
据我所知,你不能将数据从一个控制器传递到另一个控制器,最多可以将一个字符串连接到该操作,如用于查看或编辑的ID。
如果您想传递信息,可以尝试按以下方式在SESSION变量中设置:
$this->Session->write('Info', $info);
在您的其他控制器中,您可以检查它:
$this->Session->read('Info');
答案 1 :(得分:2)
看起来像蛋糕不会让你将数组传递给控制器动作。我设置了一个简单的例子,我得到了一个'数组到字符串转换错误'。是否有一个特定的原因,您不只是将数据发布到浴室/仪表板?我可以为您的问题想一个解决方法,但它非常混乱。
上面的8vius解决方案肯定会奏效。 这是另一种方式,但使用会话可能要好得多
$str = http_build_query($info);
$this->redirect('/baths/dashboard?'.$str);
然后在您的浴室/仪表板操作中,您将可以使用php $ _GET数组访问您的数据。
因此,如果您最初拥有this->data['name']
,则可以使用$_GET['name']
答案 2 :(得分:0)
我不确定在不同控制器中传递数据但在同一个控制器中我们可以通过编写类似这样的函数调用来完成它。
$this->function_name($info);
这将完全按预期工作。我没有尝试过这种类型的数据传递不同的控制器功能。