【问题标题】:CakePHP - Render different view and set variablesCakePHP - 渲染不同的视图并设置变量
【发布时间】:2014-03-23 18:54:07
【问题描述】:

我正在尝试为不属于任何控制器的视图呈现和设置变量。这是我的文件夹结构的示例:

app/
-->View/
   -->ExternalReportViews/ (There is no ExternalReportViews Controller)
      -->example_view.ctp   

我正在尝试将一个名为 $orders 的变量传递给视图,我已通过控制器的调试验证了该变量存在并包含数据。

我已使用以下任一方法成功渲染视图:

// Method 1
$this->render('/ExternalReportViews/example_view');
$this->set('orders', $orders);

// Method 2
$view = new View($this, false);
$view->viewPath = 'ExternalReportViews';
$view->render('example_view');
$view->set('orders', $orders);

// Method 3
$this->viewPath = 'ExternalReportViews';
$this->render('example_view');
$this->set('orders', $orders);

上面的任何一个方法中,似乎不管set方法是放在render之前还是之后,$orders变量都没有传递给rendered view。

尝试在视图中调试($orders) 时,我看到变量未定义。

我显然可以通过将 $orders 临时存储在 $this->Session 中来绕过这个问题,但这似乎有点混乱。

所有这一切的原因是,我将在每个报告的基础上创建许多视图,我宁愿将它们放在单独的(子)文件夹中,以便进行更清晰的文件管理。

【问题讨论】:

  • 您是否尝试过使用不同的变量名?
  • @scrowler 好吧,刚刚成功了!我的变量名是否与 Cake 中的某些内容冲突?还是我只是碰巧在呈现此视图的控制器的另一种方法中引起了冲突? (我可以看到这种情况发生,因为我经常引用订单概念)
  • 可能,特别是如果你也有 beforeFilters 等设置变量(但你仍然希望有一些输出) - 它看起来像一个保留的工作,但我不知道为什么它不起作用,我也无法解释为什么它会有所作为,但我很高兴你对它进行了排序。
  • 这里的正确形式是什么?我应该要求您将此作为答案发布以便我接受它,还是我应该发布解决方案?
  • 自己贴吧,伙计,我的cmets不值得任何声誉,因为我无法为您解释任何事情。

标签: php cakephp cakephp-2.0 cakephp-2.1 cakephp-2.3


【解决方案1】:

因为它会发生,我只需要更改变量名。我要么点击保留关键字,要么之前在我的 beforeFilter 方法中定义了变量。还不确定是哪一个,但归功于 scrowler 指出了这一点。

【讨论】:

  • 我猜只有在设置变量后渲染视图时才能访问变量......我想知道为什么我的变量无法访问......阅读你的问题解决了我的问题
猜你喜欢
  • 2014-01-19
  • 1970-01-01
  • 2011-07-13
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多