【问题标题】:CakePHP 2.x: Send $this->Session->data array to another view/controllerCakePHP 2.x:发送 $this->Session->data 数组到另一个视图/控制器
【发布时间】:2013-01-01 15:29:49
【问题描述】:

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

详情:

1 个控制器:

  • 报告

2 次观看:

  1. create_report
  2. view_report

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

寻求帮助:

我需要做的是将相同的信息($this->session->data)从 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 的这种情况的帖子。

【问题讨论】:

  • 是否需要 create_report 中的数据验证?
  • 我最终会添加数据验证。现在,只是让一切正常工作。 :)

标签: cakephp cakephp-2.0 cakephp-2.1


【解决方案1】:

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

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

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

【讨论】:

  • 非常感谢!这最终成为我使用的解决方案。我还不太熟悉 Sessions 数据,所以这对我来说更容易实现。不过,我相信我很快就会了解会话... :)
【解决方案2】:

如果您在会话中存储了数据,那么您可以直接从您的 view_report 视图或任何其他视图访问它。为此,您可以使用 Session Helper。

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

要使用这种方法,请确保您已加载会话助手。更多相关信息here

或者您可以像处理任何其他数据一样在控制器中使用 $this->set 将会话数据传递给视图。

如果您想查看当前会话的内容,出于调试目的,您可以从视图中转储会话...

var_dump($this->Session);

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多