【问题标题】:Pass a variable from view to layout in CakePHP - or where else to put this logic?在 CakePHP 中将一个变量从视图传递到布局 - 或者在哪里放置这个逻辑?
【发布时间】:2011-03-23 20:59:51
【问题描述】:
我想在我的视图中填充一个数组$pageWidgets,这样我就可以控制在我的侧边栏中显示哪些小部件以及在我的布局中显示哪些信息,但从我的视图中。我唯一的问题是布局似乎在视图(或其他块)之前被解析并且它不起作用。
很简单,我的$pageWidgets 数组包含一个键,其中包含一个元素名称和我的模型中的数据值(即:$pageWidgets['product_meta'] = $product;,主布局只是循环通过该数组并填充侧边栏。
我的应用还处于起步阶段,因此任何其他为页面注册小部件的方法都将受到重视,但将这些数据显示在视图中似乎是有道理的。
我使用的是 CakePHP 1.3。
【问题讨论】:
标签:
php
cakephp
cakephp-1.3
variable-assignment
【解决方案1】:
我实际上使用相同的技术来实现相同的目的。但是,您必须像这样在视图中设置数组:
$this->set('widgetsToRender', array(foobar));
然后,在您的布局或元素文件中,您可以使用该数组。示例:
<?php
if (in_array('some_widget', $widgetsToRender)):
// do whatever
您还可以在相关布局或元素中为此数组设置默认值,例如:
if (empty($widgetsToRender)) {
$widgetsToRender = array(default value);
}