【问题标题】:Customizing layouts with CakePHP based on the current record根据当前记录使用 CakePHP 自定义布局
【发布时间】:2011-03-08 01:51:32
【问题描述】:
有没有人建议如何根据当前视图而不是与视图关联的数据来自定义整个站点的布局?在大多数情况下,我们使用的模型具有关联的俱乐部 ID,因此必须根据当前页面关联的俱乐部自定义布局标题图像、css 等。
这是我目前的想法。
在与当前控制器关联的模型中调用一个函数,它会为您提供布局参数。
在 appController 的 beforeRender 中,设置俱乐部的布局参数。
这看起来不太优雅,因为每个模型都必须有这个功能,如果在应用控制器中定义了 beforeRender,我该如何调用正确的模型?
一些提示会很棒!
【问题讨论】:
标签:
cakephp
layout
model
controller
【解决方案2】:
只需在名为“dashboard.ctp”的布局中创建一个文件,然后如果您的视图是索引,您的函数将是这样的......
function index() {
$this->User->recursive = 2;
$this->layout = 'dashboard';
$this->set('users', $this->paginate());
}
重要的一行是 $this->layout = 'dashboard';
【解决方案3】:
我们最终要做的是在应用控制器中检查当前正在从中加载站点的域,然后根据此信息设置布局(为站点需要自定义的每个域设置一个布局)。不是一个很好的解决方案,但效果很好。