在 Cakephp 中使用布局/元素

Posted

技术标签:

【中文标题】在 Cakephp 中使用布局/元素【英文标题】:Using layouts/elements in Cakephp 【发布时间】:2010-07-22 12:54:51 【问题描述】:

我正在使用 Cakephp 开发一个 webapp。我为网站创建了默认布局。我创建了页眉、页脚、内容等部分。

现在我的内容部分中的一些页面具有相同的结构。这些是控制器的一部分,为每个页面定义了各种视图。我应该在这里使用什么视图模板?布局还是元素?

如果我使用布局,我将使用控制器来决定我将使用的布局,但这不会改变整个网站的布局吗?

问候

【问题讨论】:

【参考方案1】:

这确实是一个偏好问题。我尝试将布局视为页面的“结构”——因此是页眉、左侧导航的占位符、顶部导航的占位符、页脚。那种事。我在布局中定义了这些部分。

我建议您将“我的内容部分中的页面[具有相同结构]”作为您的布局。正如您所提到的,您可以在控制器中切换布局,但任何类似的结构化页面(一旦您删除内容后看起来彼此相同的页面)我会共享一个布局。

另一个布局切换的例子是登录用户和匿名用户。对于登录用户,网站经常在顶部放置“欢迎,$name”消息,以及指向我的帐户、退出等的链接。我经常发现自己使用不同的布局来登录用户和匿名用户。另外,在这种情况下,我使用 beforeFilter() 方法来设置给定控制器的布局,因为我知道执行该回调时用户是否已登录。

抱歉漫无边际,但这有点灰色地带(何时使用布局与不同元素)。

【讨论】:

感谢这个漫无边际的 :)。关于我的问题的一件事是,所谓的页面(具有相同的结构)的内容结构相同。页眉、页脚、菜单和所有内容都与主布局相同。在这种情况下,有什么方法可以在布局中使用布局? 我会将它们放入元素中,您可以从布局中包含这些元素。从语义上讲,它更有意义——布局是骨架,它可以由多个组件(元素)组成。它稍微混合了隐喻,以包含另一个布局中的布局。

以上是关于在 Cakephp 中使用布局/元素的主要内容,如果未能解决你的问题,请参考以下文章

默认布局 cakePHP

布局中的 CakePHP 动态菜单内容

在 app_controller 中设置一个变量并在 CakePHP 布局中使用它

Cakephp - 如何让错误页面有自己的布局?

PHP 更改Cakephp中错误页面的布局

更改Cakephp中错误页的布局