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

您好,
我是开发团队的 Hase。
我经常使用 CakePHP 进行开发,
在编写视图时,我总是将
`<head>` 部分、`<header>` 和 `<footer>` 等常用部分编写到单独的文件中。
但是,这样编写意味着如果需要修改,
就必须单独修改每个文件,这非常困难和麻烦。
这让我不禁思考是否有办法将共同部分组合在一起,所以我做了一些研究,
找到了一种方法,我想和大家分享一下。
方法
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
