CakePHP 2.x:将$ this-> Session->数据数组发送到另一个视图/控制器

时间:2013-01-01 15:29:50

标签: cakephp cakephp-2.0 cakephp-2.1

寻找最有效的方法来执行以下操作:

详细说明:

1个控制器:

  • 报告

2次观看:

  1. create_report
  2. view_report
  3. create_report 有一个表单,其中收集将在 view_report 视图中使用的信息。 我知道表单中输入的数据可通过 $ this-> session-> data 元素在 create_report 视图中使用。

    寻求帮助:

    我需要做的是将相同的信息($ this-> session->数据)从 create_report 视图发送到 view_report 视图(通过控制器,我假设)。

    到目前为止我所拥有的:

    只是一个链接:

    echo $this->Html->link('View Report', array('controller' => 'reports', 'action' => 'view_report'));
    

    但这只会让用户进入 view_report 视图。它不会将 $ this-> session-> data 中的信息发送到该视图。

    我认为它与Js助手有关,但我无法找到任何直接处理CakePHP 2.x这种情况的帖子。

3 个答案:

答案 0 :(得分:2)

您可以通过控制器操作create_report绕过数据处理,并将它们直接发送到报告视图,并在需要时进行验证。只需在create_report.ctp视图中更改表单创建。

$this->Form->create('Report', array('action' => 'view_report'));

数据将直接提交给view_report操作,并在$ this-> request-> data

中提供

答案 1 :(得分:2)

如果您按照说明将数据存储在会话中,则可以直接从view_report视图或任何其他视图访问该数据。为此,您可以使用会话助手。

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

要使用此方法,请确保已加载会话助手。有关它的更多信息here

或者您可以使用控制器中的$ this->设置将会话数据传递给视图,就像使用任何其他数据一样。

如果您希望为了调试而查看当前会话的内容,可以从视图中转储会话...

var_dump($this->Session);

答案 2 :(得分:0)

也可以使用这种方式,在这种情况下,你可以发送到任何控制器的任何动作

$this->Form->create('Report', array('url' => '/my_contoller/my_action'));