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

你好。
这是开发团队的Hase。
我经常使用CakePHP进行开发,
在编写视图时,我总是将
头部、页眉和页脚等公共部分写入单独的文件中。
但是如果这样写的话,如果需要修改的话,
就得把每个文件都一一修改,非常困难和麻烦。 。
基于此,我想到有一种方法可以将公共部分组合在一起,经过一番研究,
我找到了一种方法,并将其介绍给大家。
方法
1、在app/View/Elements/下创建一个通用布局的View文件
首先,在app/View/Elements/下创建一个通用布局。
文件名为{任意文件名}.ctp,与普通View相同。
这次我们使用 head.ctp、header.ctp、footer.ctp。
只需复制并粘贴普通视图中编写的头部、页眉和页脚部分即可。
对了,也可以在app/View/Elements/下创建一个目录,将View文件放在下面。
示例:app/View/Elements/Admin/header.ctp 等。
2. 在普通视图中加载之前创建的文件
到你想阅读的部分
// 公共头<?php echo $this->element('head'); ?> // 公共头<?php echo $this->element('header'); ?> // 公共页脚<?php echo $this->元素('头');
如果你写这个,你之前创建的文件将被自动加载。
另外,如果您创建了像 app/View/Elements/Admin/ 这样的目录
// 公共头<?php echo $this->element('Admin/head'); // 公共头<?php echo $this->element('Admin/header'); // 公共页脚<?php echo $this->元素('管理员/头');
如果你写就可以了。
问题
我认为尽管有一些共同点,但还是有很多不同之处。
最常见的是头部内的标题标签。
标题标签元素的内容通常根据页面的不同而变化。
我们也可以处理这些情况。
您可以通过使用关联数组作为 $this->element() 的第二个参数并使用 ["variable name" => "value"] 来
使用示例:
// 元素侧 (head.ctp)<head> ......<title> <?php 回显 $title;</title></head>
// 通常查看端(调用者)<?php echo $this->元素('头',[“标题”=>“顶部”]);
这非常方便,因为你可以这样调用它。
就是这样。
如果您觉得这篇文章有帮助,请点赞!
            
          




![[大阪/横滨/德岛] 寻找基础设施/服务器端工程师!](https://beyondjapan.com/cms/wp-content/uploads/2022/12/recruit_blog_banner-768x344.jpg) 
         
         
        ![[仅适用于 WordPress] 云服务器“Web Speed”](https://beyondjapan.com/cms/wp-content/uploads/2022/11/webspeed_blog_banner-768x344.png) 
        ![[便宜]网站安全自动诊断“快速扫描仪”](https://beyondjapan.com/cms/wp-content/uploads/2023/04/quick_eyecatch_blogbanner-768x345.jpg) 
        ![[预约系统开发] EDISONE定制开发服务](https://beyondjapan.com/cms/wp-content/uploads/2023/06/edisone_blog_banner-768x345.jpg) 
        ![[注册100个URL 0日元] 网站监控服务“Appmill”](https://beyondjapan.com/cms/wp-content/uploads/2021/03/Appmill_ブログバナー-768x344.png) 
        ![[如果您在中国旅行、出差或驻扎]中国SIM服务“Choco SIM”](https://beyondjapan.com/cms/wp-content/uploads/2024/05/china-sim_blogbanner-768x345.jpg) 
         
        ![[YouTube]超越官方频道“美由丸频道”](https://beyondjapan.com/cms/wp-content/uploads/2021/07/バナー1-768x339.jpg) 
         3
3 加载中...
加载中... 
         
                           
                           
                           
                           
                           
                           
                           
                          