ThinkPHP 5.1 的模板布局功能

ThinkPHP 5.1 的模板布局功能,包括全局配置、模板标签以及动态方法布局三种方式。以下是对这三种方式的要点概括和补充,以便于更好地理解和使用:


方式一:全局配置方式

适用于全站使用相同布局的情况,配置简单且统一。

配置步骤:

  1. 修改配置文件
    在项目的配置文件(config/view.php)中添加:

    return ['layout_on'    => true,         // 开启布局'layout_name'  => 'layout',    // 布局模板文件名称'layout_item'  => '{__CONTENT__}', // 替换内容占位符(可选)
    ];
    

    默认会使用 application/index/view/layout.html 作为布局模板。

  2. 布局模板文件
    创建 layout.html 文件,包含公共结构和 {__CONTENT__} 占位符。例如:

    {include file="public/header" /}
    <main>{__CONTENT__}</main>
    {include file="public/footer" /}
    
  3. 控制器渲染
    控制器中无需额外设置,直接返回子模板文件即可:

    return $this->fetch('add'); // 自动嵌套到 layout.html 中
    
  4. 可选功能

    • 局部关闭布局: 在子模板中添加 {__NOLAYOUT__}
    • 使用自定义替换占位符: 修改 layout_item 配置。
    • 指定其他布局路径:
      return ['layout_on'   => true,'layout_name' => 'layout/newlayout',
      ];
      


方式二:模板标签方式

适用于在模板中灵活控制布局,更加直观,但需要显式声明。

使用方法:

  1. 子模板添加布局标签
    在需要布局的模板文件(如 add.html)头部添加:

    {layout name="layout" /}

    表示使用 layout.html 作为布局模板。

  2. 可选功能:

    • 指定其他布局:
      {layout name="Layout/newlayout" /}
    • 自定义替换占位符:
      {layout name="layout" replace="{__REPLACE__}" /}

注意事项:

  • 不依赖全局配置文件中的 layout_on 设置。
  • 同一个模板文件中只能使用一个布局模板。

方式三:动态方法布局

适用于在代码中灵活控制布局,特别是局部启用或关闭布局的场景。

使用方法:

  1. 动态开启布局:

    $this->view->engine->layout(true); // 启用默认布局 return $this->fetch('add');
  2. 指定布局模板:

    $this->view->engine->layout('layout/newlayout'); 
    return $this->fetch('add');
  3. 关闭布局: 如果全局启用了布局,但需要在某个页面关闭:

    $this->view->engine->layout(false); 
    return $this->fetch('add');


三种方式的对比

方式特点适用场景
全局配置方式统一配置,自动套用布局模板,支持全局关闭或子模板局部关闭布局整站使用同一个布局框架,开发维护成本低。
模板标签方式灵活直观,在模板中显式声明布局,标签形式简单易懂局部使用布局模板,不依赖全局配置。
动态方法布局在控制器中动态控制布局,支持灵活启用/关闭或切换布局模板页面布局复杂多变,需要动态调整布局的场景。

建议

  • 全站统一布局: 使用 全局配置方式,维护方便,代码更简洁。
  • 局部布局需求: 可以结合 模板标签方式动态方法布局 灵活控制。
  • 特殊场景调整: 使用 动态方法布局 动态开启或关闭布局,尤其适合复杂项目中。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/63858.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

静默活体识别API、静默活体识别sdk、C++集成

静默活体检测服务接口&#xff0c;是一种先进的生物特征认证技术&#xff0c;可对上传的人脸图像进行检测&#xff0c;确认图像中人脸是否为人体实时拍摄&#xff0c;基于深度学习算法&#xff0c;能够有效防止照片攻击、面具攻击、屏幕攻击等行为。 发展趋势 随着人工智能和机…

图片添加水印的实验原理,实验代码,实验现象

一、图片添加水印的实验原理 1. 选择水印类型 可见水印&#xff1a;这些水印可以直接被肉眼看到&#xff0c;通常用于防止未经授权的使用。它们可以是文字、标志或图案等形式&#xff0c;并且放置在图像的显著位置。不可见水印&#xff1a;这类水印不容易被察觉&#xff0c;但…

【机器学习算法】——决策树之集成学习:Bagging、Adaboost、Xgboost、RandomForest、XGBoost

集成学习 **集成学习(Ensemble learning)**是机器学习中近年来的一大热门领域。其中的集成方法是用多种学习方法的组合来获取比原方法更优的结果。 使用于组合的算法是弱学习算法&#xff0c;即分类正确率仅比随机猜测略高的学习算法&#xff0c;但是组合之后的效果仍可能高于…

Git、Pip:安装特定版本的库的最佳方法

以这个项目为例&#xff1a; https://github.com/ashawkey/diff-gaussian-rasterization/tree/d986da0d4cf2dfeb43b9a379b6e9fa0a7f3f7eea 这个项目叫做 diff-gaussian-rasterization&#xff0c;如果要直接安装它会存在子模块文件缺失报错&#xff0c;而且不是上面”tree“后…

MySQL常用运维操作(一):快速复制一张表

假设有如下表结构&#xff1a; -- 创建表db1.t create database db1; use db1; create table t(id int primary key,a int, b int, index(a))engineinnodb;-- 向表t写入1000行数据 delimiter ;;create procedure idata()begindeclare i int;set i1;while(i<1000)doinsert i…

视频网站中重磅推荐模块(附加源码)

写在开头 上期代码主要实现省市区三级联动效果&#xff0c;开发久了很多功能都是通过框架组件库来完成&#xff0c;但是如果组件满足不了开发需求&#xff0c;还需要开发人员手动封装组件&#xff0c;专门出这样一期文章&#xff0c;通过原生js实现一些特定功能&#xff0c;功能…

Autosar CP RTE:一个例子简要介绍工作原理

以下是一个示例&#xff0c;展示如何通过AUTOSAR的RTE机制利用配置&#xff08;ARXML文件&#xff09;来实现软件组件集成&#xff0c;包含对应的C源代码以及模拟自动生成的RTE框架代码的示例。请注意&#xff0c;实际的AUTOSAR项目会复杂得多&#xff0c;这里只是一个简化且示…

HttpUtil的get和post请求

Http工具类 import org.apache.http.Consts; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.ht…

《C++:计算机视觉图像识别与目标检测算法优化的利器》

在当今科技飞速发展的时代&#xff0c;计算机视觉领域正经历着前所未有的变革与突破。图像识别和目标检测作为其中的核心技术&#xff0c;广泛应用于安防监控、自动驾驶、智能医疗等众多领域&#xff0c;其重要性不言而喻。而 C语言&#xff0c;凭借其卓越的性能、高效的资源控…

NocoBase搭建(下):安装NocoBase

系统和Docker安装好后&#xff0c;开始安装NocoBase。一.创建文件夹NocoBase rootNocobase:/mkdir NocoBase && cd NocoBase二.创建 docker-compose.yml rootNocobase:/vi docker-compose.yml version: "3" networks: nocobase: driver: bridge serv…

实践项目3:温度采集系统

一、功能说明 基于AVR单片机设计一温度采集系统。该系统由一个主机和一个从机构成&#xff0c;能够实时检测并显示现场温度&#xff0c;当温度超过预置温度时&#xff0c;进行声光报警。 二、具体要求 1、主机与从机之间采用串口通信&#xff1b; 2、从机采集温度并通过串口…

React简单入门 - [Next.js项目] - 页面跳转、AntD组件、二级目录等

须知 1Next.js 官网(英文)https://nextjs.org/2Next.js 文档(中文)https://nextjscn.org/docs/3Ant Design组件总览https://ant-design.antgroup.com/components/overview-cn4tailwindcss类名大全 官网https://www.tailwindcss.cn/docs/justify-content 5tailwindcss常用类…

Java中的“泛型“

泛型&#xff08;Generics&#xff09;是Java中的一种重要特性&#xff0c;它允许在定义类、接口和方法时使用类型参数&#xff08;type parameters&#xff09;。泛型的主要目的是提高代码的类型安全性和重用性。下面我将详细讲解Java中的泛型。 1. 泛型的基本概念 泛型允许我…

Python知识分享第25天-快速排序算法

快速排序算法 快速排序&#xff08;QuickSort&#xff09;是一种基于分治法的高效排序算法。它通过选择一个“基准”元素&#xff0c;将数组分成两个子数组&#xff0c;其中一个子数组的所有元素都比基准小&#xff0c;另一个子数组的所有元素都比基准大&#xff0c;然后递归地…

PyTorch练习——张量的四则运算与矩阵运算

练习1&#xff1a; # 导入Torch库 import torch# 创建两个张量 x torch.tensor([1, 2, 3]) y torch.tensor([4, 5, 6])# 执行加法操作 z torch.add(x, y) print("加法结果&#xff1a;", z)# 执行减法操作 z torch.subtract(x, y) print("减法结果&#xf…

String【Redis对象篇】

&#x1f3c6; 作者简介&#xff1a;席万里 ⚡ 个人网站&#xff1a;https://dahua.bloggo.chat/ ✍️ 一名后端开发小趴菜&#xff0c;同时略懂Vue与React前端技术&#xff0c;也了解一点微信小程序开发。 &#x1f37b; 对计算机充满兴趣&#xff0c;愿意并且希望学习更多的技…

C# 上位机项目开发实例全解析

一、项目规划与需求分析 功能确定 数据监控&#xff1a; 明确需采集和展示的设备数据种类&#xff0c;如温度、压力数值。规划数据的实时更新频率&#xff0c;保证监控的时效性。控制操作&#xff1a; 列出上位机对下位机的控制功能&#xff0c;如设备的启动与停止。设计控制指…

我们来学mysql -- MSI安装(安装篇)

主题 书接上文&#xff0c;在《探讨win安装方式》中官方推荐MSI要是把大厂的标准奉为圭臬&#xff0c;说啥认啥&#xff0c;他一翻脸&#xff0c;小丑不就是咱了再说了&#xff0c;都干到家门口了8.4版本官方文档&#xff0c;还不给他梭罗下 MSI 点击**.msi弹出MySQL Install…

2024年12月六级写作复习资料

1 如何看待”社交搭子“的现象 1.1 范文 In the rapid pace of modern life, emerging as a novel social model, “da zi socializing” is gaining increasing popularity among young people. It breaks free from the constraints of traditional social interactions, c…

【IC面试问题:UCIE PHY LSM AXI Cache】

IC面试问题&#xff1a;UCIE PHY LSM && AXI && Cache 1 UCIE PHY LSM有几种状态&#xff1f; 以及L1和L2这两种低功耗状态有什么区别&#xff1f;2 AXI的特性&#xff1f; 通道之间有依赖关系吗&#xff1f; master和slave的valid和ready关系&#xff1f; 写数…