CakePHP内置了三种布局变量: $title_for_layout, $content_for_layout ,和 $scripts_for_layout(自1.2).
如它们的名字的含义一样,这些变量在布局中用作占位符以填充数据.
使用自定义布局变量最简单的方法是在你的控制器或者视图中调用 $this->()设置一个变量:

然后你可以在你的布局中使用该变量:



该方案的"问题"是必须用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 ;
}
}

然后我能在所有视图中访问该Helper.
给$var_for_layout设置值我使用DemoHelper对象而不再使用 $this->set()
$demo->setValue('value');
在布局中现在我能输出自定义的布局变量了.
echo $var_for_layout;