【发布时间】: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