简单的cakephp问题


simple cakephp problem

我知道这是一个非常简单的事情,我真的应该知道,但我试图学习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()

请帮帮我!:茱莉亚)

据我所知,你不能以这种方式将数据从一个控制器传递到另一个控制器,最多你可以将一个字符串连接到动作,比如视图或编辑的ID。

如果你想传递信息,你可以尝试在SESSION变量中设置它,方法如下:

$this->Session->write('Info', $info);

在另一个控制器中你可以检查它:

$this->Session->read('Info');

看起来cake不允许你将数组传递给控制器动作。我设置了一个简单的例子,我得到了一个"数组到字符串转换错误"。你为什么不把数据发布到浴室/仪表板上?我可以想到一个解决你的问题的方法,但它相当混乱。

8vius的解决方案肯定会奏效。这里有另一种方法,但使用会话可能要好得多

$str = http_build_query($info);
$this->redirect('/baths/dashboard?'.$str);

那么在你的浴池/仪表板动作,你将有访问你的数据使用php $_GET数组。所以如果你原来有this->data['name']你可以用$_GET['name']

访问它

我不确定在不同的控制器中传递数据,但在同一个控制器中,我们可以像函数调用一样,通过写这样的东西。

$this->function_name($info);

这将完全按照预期工作。我没有尝试过在不同的控制器函数中传递这种类型的数据。