返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >ThinkPHP 6 视图:从零开始
  • 901
分享到

ThinkPHP 6 视图:从零开始

ThinkPHP6视图 2023-09-05 18:09:39 901人浏览 独家记忆
摘要

框架6.0默认只能支持PHP原生模板,如果需要使用thinkTemplate模板引擎,需要安装think-view扩展(该扩展会自动安装think-template依赖库)。 PHP原生模板 1.配置文件 默认设置为Think,因

框架6.0默认只能支持PHP原生模板,如果需要使用thinkTemplate模板引擎,需要安装think-view扩展(该扩展会自动安装think-template依赖库)。

PHP原生模板

1.配置文件

默认设置为Think,因为没有安装,直接使用会报错;使用php原生模板,需要修改配置目录的view.php文件的模板引擎为`php`(多应用则是相应的应用下view.php):

2.报错提示

3.修改模板引擎

// 模板引擎类型使用Think'type'          => 'php',

4.模板渲染

这里做一个简单示例,TP的模板渲染会做更详细讲解,因为php原生模板变量渲染与常规TP不同,故作此示例:

5.控制器文件

// 添加引用use think\facade\View;
// 变量赋值View::assign('name', '张三');// 模板输出return View::fetch('user/index');

6.视图文件

user/index.html

        用户详情    

用户详情

我是

TP模板引擎

1.安装

composer require topthink/think-view

2.配置文件

安装完成后,在配置目录的view.php文件中进行模板引擎相关参数的配置

(多应用则是相应的应用下view.php),例如:

return [    // 模板引擎类型使用Think    'type'          => 'Think',    // 默认模板渲染规则 1 解析为小写+下划线 2 全部转换小写 3 保持操作方法    'auto_rule'     => 1,    // 模板目录名    'view_dir_name' => 'view',    // 模板后缀    'view_suffix'   => 'html',    // 模板文件名分隔符    'view_depr'     => DIRECTORY_SEPARATOR,    // 模板引擎普通标签开始标记    'tpl_begin'     => '{',    // 模板引擎普通标签结束标记    'tpl_end'       => '}',    // 标签库标签开始标记    'taglib_begin'  => '{',    // 标签库标签结束标记    'taglib_end'    => '}',];

比如我习惯模板变量标签是两个花括号,改一下这里就行

// 模板引擎普通标签开始标记'tpl_begin'     => '{{',// 模板引擎普通标签结束标记'tpl_end'       => '}}',// 标签库标签开始标记'taglib_begin'  => '{{',// 标签库标签结束标记'taglib_end'    => '}}',

模板变量

View门面全局变量赋值

public function index(){    // 单次赋值    View::assign('name', '张三');    // 批量赋值    View::assign(['gender' => '男', 'school' => '本科']);    // 输出模板    return View::fetch('user/index');}

View门面当前模板赋值

public function index(){    // 输出模板    return View::fetch('user/index', [        'name' => '张三',        'gender' => '男',        'school' => '本科'    ]);}

助手函数当前模板赋值

public function serviceContractPreview(){    // 输出模板    return view('user/index', [        'name' => '张三',        'gender' => '男',        'school' => '本科'    ]);}

模板渲染

模板路径

默认设置的模板目录名是`view`,如果没有特殊需求,不建议更改:

// 模板目录名'view_dir_name' => 'view',

单应用

├─app│   └─view(视图目录)│     ├─index            index控制器视图目录│     │  └─index.html    index模板文件│     └─ ...             更多控制器视图目录

多应用

├─app│  ├─app1 (应用1)│  │   └─view(应用视图目录)│  │     ├─index            index控制器视图目录│  │     │  └─index.html    index模板文件│  │  └─ ...             更多控制器视图目录│  ││  └─ app2... (更多应用)

简单渲染

自动定位当前控制器视图目录下的index视图文件

public function index(){    return View::fetch();    // 或者    return view();}

当前控制器下其他模板

定位的是当前控制器视图目录下的user视图文件

public function index(){    return View::fetch('user');    // 或者    return view('user');}

其他控制器下的模板

定位的是其他控制器视图目录下模板文件;

控制器不存在只要视图目录和文件存在,也可以访问。

public function index(){    return View::fetch('user/index');    // 或者    return view('user/index');}

视图根目录模板

public function index(){    return View::fetch('/user');    // 或者    return view('/user');}

相对定位下模板访问

相对的是入口文件index.php所在位置

public function index(){    return View::fetch('../user/index.html');    // 或者    return view('../user/index.html');}

只渲染内容

public function index(){    // 此时要用单引号 双引号会解析变量    $content = '我是{{$name}}
性别{{$gender}}'; return View::display($content, ['name' => '张三', 'gender' => '男']);}

提取模板内容

返回模板解析变量后的html字符串,可用于创建pdfWord文件

public function index(){    $content = view('user/index', ['name' => '张三'])->getContent();}

视图过滤

View门面

public function index(){    // 使用视图输出过滤    $name = ['name' => "\r\n精\r\n忠\r\n报\r\n\r\n国"];    return View::filter(function($name){        return str_replace("\r\n",'
',$name); })->assign($name)->fetch('user/index');}

view助手函数

public function index(){    $name = ['name' => "\r\n精\r\n忠\r\n报\r\n\r\n国"];    return view('user/index', $name)->filter(function($name){        return str_replace("\r\n",'
',$name); });}

说明:

效果是把符号`\r\n`替换为html标签`
`换行;这里只是举例,也可以对要渲染的数据做xss攻击的字符串过滤。

切换模板引擎

1.Engine初始化

视图类提供了engine方法对模板解析引擎进行初始化来切换不同的模板引擎:

使用门面View(think\facade\View)

没有变量赋值,直接输出模板

namespace app\index\controller;use think\facade\View;class Index{    public function index()    {        // 使用内置PHP模板引擎渲染模板输出        return View::engine('php')->fetch();    }}

如果有变量赋值

namespace app\index\controller;use think\facade\View;class Index{    public function index()    {        // 初始化内置PHP模板引擎        View::engine('php');        // 变量赋值        View::assign('name', '张三');        // 模板输出        return View::fetch('index');    }}

2.Config信息修改

如果需要动态改变模板引擎的参数,请使用视图类提供的config方法进行动态设置。

namespace app\index\controller;use think\facade\View;class Index{    public function index()    {        // 改变当前操作的模板路径        View::config(['type' => 'php']);        // 变量赋值        View::assign('name', '张三');        // 模板输出        return View::fetch('index');    }}

总结:

ThinkPHP视图的使用很简单,但是如果要在默认的基础上做一些改变,就需要一些时间去摸索;阅读本篇文章,可以节省时间更快的实现你的视图需求;如果还有不会的,可以私信与我探讨。

来源地址:https://blog.csdn.net/json_ligege/article/details/128940159

--结束END--

本文标题: ThinkPHP 6 视图:从零开始

本文链接: https://lsjlt.com/news/395879.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • ThinkPHP 6 视图:从零开始
    框架6.0默认只能支持PHP原生模板,如果需要使用thinkTemplate模板引擎,需要安装think-view扩展(该扩展会自动安装think-template依赖库)。 PHP原生模板 1.配置文件 默认设置为Think,因...
    99+
    2023-09-05
    ThinkPHP6 视图
  • 从零开始TP6配置ThinkPHP-ApiDoc
    系统:windows11 集成环境:小皮(原phpstudy) composer:2.5 准备工作:安装小皮后,在软件管理中安装composer,2.3安装不上去,只能安装1.8.5,没关系安装后升级成为新版就可以,安装后记得把compos...
    99+
    2023-09-07
    php 开发语言 apidoc
  • 从零开始SSM搭建步骤(图文)
    目录第一章:搭建整合环境1. 搭建整合环境第二章:Spring框架代码的编写第三章:Spring整合SpringMVC框架1. 搭建和测试SpringMVC的开发环境2. Sprin...
    99+
    2024-04-02
  • 从零开始学Python-day7
    python-Day7学习要有定位,明确目标地去学习。希望自己能坚持下去,并有所收获---leaves(ps月初有事耽误计划了,进度落后计划蛮多了,算了。不多想,复习,学会才是硬道理,坚持fighting!...
    99+
    2024-04-02
  • 从零开始学习Node.js
    目录url模块1.parse 方法2.format 方法3.resolve 方法events模块(事件驱动)path模块总结url模块 1.parse 方法 // test02....
    99+
    2024-04-02
  • 从零开始学习React
    这篇文章主要讲解了“从零开始学习React”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“从零开始学习React”吧!0: 从一次最简单的 React 渲染说...
    99+
    2024-04-02
  • 从零开始学Python-day2
    Python--Day2今日一句:距2017年仅剩三月不足,整理思路。希望来年按计划一步一步走下去!学习要有定位,明确目标地去学习。---leavespython01---基础语法运维开发:    这个岗位最近已经越来越火,作为一个刚毕业没...
    99+
    2023-01-31
    从零开始 Python
  • 从零开始学Python-day3
    Python--Day3学习要有定位,明确目标地去学习。---leavespython02---list知识一 list的概念    列表的概念:列表可以完成大多数集合类的数据结构实现。它支持字符,数字,字符串甚至可以包含列表(所谓嵌套)。...
    99+
    2023-01-31
    从零开始 Python
  • 从零开始学习Go语言图形API开发
    从零开始学习Go语言图形API开发,需要具体代码示例 图形API开发一直以来都是程序员们感兴趣的领域之一。通过图形API开发,我们可以创建出各种各样的图形界面应用程序,使用户可以更加直...
    99+
    2024-04-02
  • 如何从零开始学Java
    很多人在大学就开始考虑学一技之长,以便于将来在职业上有更多的选择。 有的人则是在社会上碰壁撞了南墙之后,毅然决然要学一门技术来安身立命。或许是同学朋友的介绍,或许是看多了广告,或许仅仅是缘分,你选择了Java。我不是推荐你要学Java,我是...
    99+
    2023-09-21
    java 计算机视觉 计算机网络 java
  • 一文教会你从零开始画echarts地图
    目录echarts地图制作基础配置数据渲染嵌入文字地图下钻结合水印制作级联效果visualMap总结echarts地图制作 离线地图下载地址https://datav.aliyun....
    99+
    2024-04-02
  • 从零开始学Golang的接口
    目录前言1.为什么需要接口?2.接口是什么?如何定义?3.接口实战初体验4.如何测试是否已实现该接口?5.空接口&类型断言6.接口零值7.一个类型实现多个接口8.指针与值类型...
    99+
    2024-04-02
  • github项目从零开始搭建
    Github是程序员必备的开发工具之一,本文将从零开始介绍如何搭建自己的Github项目。一、注册Github账号首先,需要注册一个Github账号,访问 https://github.com/ ,点击右上角的“Sign up”按钮进入注册...
    99+
    2023-10-22
  • 从零开始的Python学习Episode
    一、输入与输出 1.输入 input("number:") num = input("number:") 下面一段可以把输入的信息存在num中。 注意:输入的信息会被认为是字符串,如果要输入数字进行运算要先把输入的信息进行强制类型转换...
    99+
    2023-01-30
    从零开始 Python Episode
  • Python计算机视觉项目实战:从零开始构建图像识别应用
    调整图像大小 转换图像格式 滤波 增强 特征提取 特征提取是计算机视觉的另一个重要任务。它涉及到从图像中提取具有区分性的信息。常用的特征提取方法包括: 边缘检测 角点检测 颜色直方图 局部二值模式 分类 分类是计算机视觉的最终目标...
    99+
    2024-02-07
    pip install opencv-python 图像预处理 图像预处理是计算机视觉任务的重要组成部分。它涉及到对图像进行一系列操作 使其更适合于分析。常用的预处理技术包括:
  • Kotlin Android(从零开始一个项目)
    Day 2 day1总结:我们完成了整体页面的搭建,并且搭建好了应用的底部选项卡。 day2目标:在底部选项卡切换的同时,完成上方页面的切换 开...
    99+
    2022-06-06
    Kotlin Android
  • Kotlin Android (从零开始一个项目)
    LoveDairy 在跟着黑马程序员的kotlin开发教程的项目(黑马外卖)学习中,突然想着一边跟着他的代码抄写运行,一边通过学习到的方法,从零...
    99+
    2022-06-06
    Kotlin Android
  • 从零开始创建自己的blogger
    今天就跟大家聊聊有关从零开始创建自己的blogger,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。www.minminmsn.com是否受够了各博客...
    99+
    2024-04-02
  • Photon物联网编程从零开始
    Christopher RushProgramming the Photon:Getting Started with the Internet of ThingsEISBN:978-0-07-184706-3Copyright © 201...
    99+
    2023-06-03
  • [Android]从零开始的内核编译
    从零开始的内核编译 本教程将基于小米 10S 的内核源码进行实例,其他型号的手机请自行寻找内核源码。具体内容可以参考我的内核编译项目。 手机型号查询 1. 获取设备(手机)代号 在安卓设备终端(adb shell)上执行: getpr...
    99+
    2023-08-17
    android git
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作