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

这篇文章的作者

关于作者

长谷达也

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

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

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

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