【发布时间】:2013-06-05 04:17:11
【问题描述】:
在 PHP Lithium 中,如何更改默认布局?我有两个不同视图的布局,我想在不同的视图中切换它们,我该如何实现?
谢谢。
【问题讨论】:
在 PHP Lithium 中,如何更改默认布局?我有两个不同视图的布局,我想在不同的视图中切换它们,我该如何实现?
谢谢。
【问题讨论】:
您在控制器中切换布局。因此,当您在控制器中完成时,您会以这种方式调用渲染。
return $this->render(array('layout' => 'someFancyLayout'));
您也应该能够在控制器中执行此操作。我不确定,但您可能需要扩展控制器以使用这种方式。
$this->_render['layout'] = 'someFancyLayout';
请注意,您还可以设置自定义媒体处理程序。这例如在请求 GPX 文件时使用,在这种情况下我不使用哪个布局。
Media::type('gpx', 'application/text', array(
'view' => 'lithium\template\View',
'layout' => false,
'template' => false
));
您也可以在renderer 调用中使用过滤器:
Media::applyFilter('render', function ($self, $params, $chain) {
$params['options']['layout'] = 'default';
if (someCondition == isMet) {
$params['options']['layout'] = 'anotherLayout';
}
return $chain->next($self, $params, $chain);
});
【讨论】:
page.html.php 的布局并将其放在layouts 目录中。我按照您在我的 Controller 中名为 page 的方法指定的方式来调用它。但是我收到一条错误消息,说在views\controllerName 目录中找不到模板。我做对了吗?不是所有布局都应该在layouts 文件夹中吗?