CakePHP内置了三种布局变量: $title_for_layout, $content_for_layout ,和 $scripts_for_layout(自1.2).
如它们的名字的含义一样,这些变量在布局中用作占位符以填充数据.
使用自定义布局变量最简单的方法是在你的控制器或者视图中调用 $this->()设置一个变量:
$this->set('var_for_layout', 'value');然后你可以在你的布局中使用该变量:
f (isset($var_for_layout)) {
echo $var_for_layout;
}该方案的"问题"是必须用isset检测变量的有效性,当变量并没有设置时避免"undefined variable"错误.
为避免该问题,我编写了一个简单的Helper当变量没有设置时自动赋予一个空字符串.
class DemoHelper extends AppHelper {
var $value = '';
function afterRender() {
$view = ClassRegistry::getObject('view');
$view->set('var_for_layout', $this->value);
}
function setValue($value) {
$this->value = $value;
}
}
var $value = '';
function afterRender() {
$view = ClassRegistry::getObject('view');
$view->set('var_for_layout', $this->value);
}
function setValue($value) {
$this->value = $value;
}
}
var $helpers = array('Demo');然后我能在所有视图中访问该Helper.
给$var_for_layout设置值我使用DemoHelper对象而不再使用 $this->set()
$demo->setValue('value');
在布局中现在我能输出自定义的布局变量了.
echo $var_for_layout;
本文介绍如何在CakePHP中优化布局变量的使用,通过自定义Helper来简化变量赋值过程并确保变量始终可用,避免了因变量未定义而引发的错误。

4224

被折叠的 条评论
为什么被折叠?



