如何使用 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
加载中...
3票,平均分:1.00/13
8,977
X Facebook Hatena书签 口袋

这篇文章的作者

关于作者

长谷达也

应届毕业生加入 Beyond Co., Ltd.。

我们开发网络系统(开发基于浏览器的服务和系统,例如网络服务、数字内容和业务管理系统)和游戏 API(开发用于与应用程序游戏通信的程序)。

我们也为 Shopify 开发私有/定制应用程序。

最初在大阪办公室工作,2019 年调到横滨办公室。
爱好:棒球、卡拉OK、动漫。