如何使用 CakePHP 在视图中重用公共部分

大家好,
我是开发团队的 Hase。
我经常使用 CakePHP 进行开发,
直到现在,在编写视图时,
我一直将头部、页眉和页脚等公共部分编写在单独的文件中。
但是,如果这样编写,当需要进行任何更改时
,都必须逐个编辑每个文件,这非常困难和繁琐。
因此,我想知道是否有一种方法可以将共同部分组合在一起,经过一番研究,我
找到了一种方法,我想向大家介绍一下。
方法
1. 在 app/View/Elements/ 目录下创建一个通用布局视图文件
首先,在 app/View/Elements/ 目录下创建一个通用布局文件。
文件名是 {任意文件名}.ctp,就像普通的视图文件一样。
这次我们把它们分别命名为 head.ctp、header.ctp 和 footer.ctp。
只需复制粘贴你在普通视图中编写的 head、header 和 footer 部分即可。
顺便一提,你也可以在 app/View/Elements/ 目录下创建一个子目录,并将视图文件放在该目录下。
例如:app/View/Elements/Admin/header.ctp
2. 以普通视图加载您刚刚创建的文件
在您要加载的部分
// 普通头<?php echo $this->element('head'); ?> // 通用头部<?php echo $this->element('header'); ?> // 通用页脚<?php echo $this->element('head');
这将自动加载您刚刚创建的文件。
另外,如果您创建了一个类似 app/View/Elements/Admin/ 的目录
// 普通头<?php echo $this->element('Admin/head'); ?> // 通用头部<?php echo $this->element('Admin/header'); ?> // 通用页脚<?php echo $this->element('Admin/head'); ?>
这样写是可以的。
问题
尽管它们是常见的组成部分,但通常也存在一些差异。
一个常见的例子是头部(<head>)中的标题标签(title tag)。
标题标签元素的内容通常会因页面而异。
这种情况也可以处理。
你可以通过将关联数组作为第二个参数传递给 $this->element(),即 ["变量名" => "值"]
使用示例:
// 元素侧(head.ctp)<head> .......<title> <?php echo $title; ?></title></head>
// 普通视图侧(调用方)<?php echo $this-> element('head', ["title" => "顶部"]); ?>
这样打电话很方便。
就这样。
如果您觉得这篇文章有用,请点击【点赞】!
3