CakePHP - 渲染不同的视图并设置变量

时间:2014-03-23 18:54:07

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

我正在尝试渲染并将变量设置为不属于任何控制器的视图。以下是我的文件夹结构示例:

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方法是在上述任何方法中放置在渲染之前还是之后,$ orders变量都不会传递给渲染视图。

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

我可以通过暂时在$ this-> Session中存储$ order来绕过这个问题,但这看起来有点乱。

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

1 个答案:

答案 0 :(得分:1)

因为它会发生,我只需要更改变量名称。我正在点击保留关键字,或者我之前在beforeFilter方法中定义了该变量。还不确定到底哪一个,但是对于那个指出那个的人来说,可归功于scrowler。