ThinkPHP6,视图的安装及模板渲染和变量赋值 view::fetch() ,view::assgin() ,助手函数

news2025/1/21 16:40:30

ThinkPHP6,视图的安装及模板渲染和变量赋值

tp6视图功能由\think\View类配合视图驱动(也即模板引擎驱动)类一起完成,新版仅内置了PHP原生模板引擎(主要用于内置的异常页面输出),如果需要使用其它的模板引擎需要单独安装相应的模板引擎扩展。

使用think-template模板引擎,只需要安装think-view 模板引擎驱动。

composer require topthink/think-view

视图相关的配置在配置目录的view.php配置文件中进行定义。

通常可以直接使用think\facade\View来操作视图。

视图的安装

首先,我们切换到tp6框架安装的目录,然后通过cmd命令窗口(composer require topthink/think-view)将think-view模板引擎驱动安装。

在这里插入图片描述
在这里插入图片描述

不出意外,安装成功!

模板渲染和变量赋值

在安装好think-view后,我们就可以使用控制器来将不同的请求转到不同的视图了,并且可以传递一些参数过去。比如在原有的index.php控制器中,修改对应的一些方法,然后返回不同的视图,(最常用的是 view::fetch() view::assign() )。

首先来看下view.php中的源码:

<?php
    
declare (strict_types = 1);

namespace think\facade;

use think\Facade;

/**
 * @see \think\View
 * @package think\facade
 * @mixin \think\View
 * @method static \think\View engine(string $type = null) 获取模板引擎
 * @method static \think\View assign(string|array $name, mixed $value = null) 模板变量赋值
 * @method static \think\View filter(\think\Callable $filter = null) 视图过滤
 * @method static string fetch(string $template = '', array $vars = []) 解析和获取模板内容 用于输出
 * @method static string display(string $content, array $vars = []) 渲染内容输出
 * @method static mixed __set(string $name, mixed $value) 模板变量赋值
 * @method static mixed __get(string $name) 取得模板显示变量的值
 * @method static bool __isset(string $name) 检测模板变量是否设置
 * @method static string|null getDefaultDriver() 默认驱动
 */
class View extends Facade
{
    /**
     * 获取当前Facade对应类名(或者已经绑定的容器对象标识)
     * @access protected
     * @return string
     */
    protected static function getFacadeClass()
    {
        return 'view';
    }
}

1. view::fetch()

view::fetch() 的方法,如果不填写参数的话,则默认会查找当前项目的view视图目录,然后再根据控制器/方法名.html找到对应的html页面。

<?php
namespace app\controller;

use app\BaseController;
use think\facade\View; // 使用模板引擎
class Index extends BaseController
{
    public function index()
    {
        // 按照默认的视图解析流程
        // 找到当前目录下的view视图目录
        // 规则是 控制器名(小写+下划线)/方法名.html
        return view::fetch();
    }

    public function hello($name = 'ThinkPHP6')
    {
        return 'hello,' . $name;
    }

    public function home(){
        return view::fetch();
    }
}

因为上面只有两个方法返回了视图层,所以新建两个对应的html页面(view/index/home.html 和 view/index/index.html)。

在这里插入图片描述

  1. view/index/home.html
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
  <h2>我是home页</h2>
</body>
</html>

2.view/index/index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    <h1>我是index页</h1>
</body>
</html>

接下来,到浏览器中访问,看是否配置正确

在这里插入图片描述

在这里插入图片描述

通过view::fetch() 传入参数,并且通过前端进行渲染

在这里插入图片描述

Login.php 控制器

<?php
namespace app\controller;

use app\BaseController;
use think\facade\View; // 使用模板引擎

class Login extends BaseController
{
    public function login()
    {
        // view::fetch('视图名',[传递参数列表])
        return view::fetch('login',[
             'name'=>'小白',
             'gender'=>'男',
             'phone'=>'17789120921'
        ]);
    }


}

创建对应的前端页面 view/login/login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<!--  通过 {$键} 的方式获取从view::fetch() 传递过来的参数-->
<div>
    <p>{$name}</p>
    <p>{$gender}</p>
    <p>{$phone}</p>
</div>
</body>
</html>

2. view::assgin()

使用view::assgin() 方法进行全局模板变量赋值,通过{$键}的方式来模板输出。

对上面的login.php控制器进行修改,如下:

<?php
namespace app\controller;

use app\BaseController;
use think\facade\View; // 使用模板引擎

class Login extends BaseController
{
    public function login()
    {
        // view::fetch('视图名',[传递参数列表])
        return view::fetch('login',[
             'name'=>'小白',
             'gender'=>'男',
             'phone'=>'17789120921'
        ]);
    }


    // 新增 view::assign()
    public function login2(){
        view::assign('name','小黑');
        view::assign('gender','女');
        view::assign('phone','15025679910');
        // 这里我们将Login2的渲染页面也指定为login.html
        return view::fetch('login');
    }
}

在这里插入图片描述

3. 助手函数

助手函数不建议使用,效率较低,实际上它是view::fetch() 和 view::assgin() 的组合封装

如下:

<?php
namespace app\controller;

use app\BaseController;
use think\facade\View; // 使用模板引擎

class Login extends BaseController
{
    public function login()
    {
        // view::fetch('视图名',[传递参数列表])
        return view::fetch('login',[
             'name'=>'小白',
             'gender'=>'男',
             'phone'=>'17789120921'
        ]);
    }


    // 新增 view::assign()
    public function login2(){
        view::assign('name','小黑');
        view::assign('gender','女');
        view::assign('phone','15025679910');
        // 这里我们将Login2的渲染页面也指定为login.html
        return view::fetch('login');
    }

    // 新增 助手函数
    public function login3(){
        return view('login',[
            'name'=>'小帅',
            'gender'=>'男',
            'phone'=>'19723911071'
        ]);
    }
}

在这里插入图片描述


未完待续!!!!

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

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

相关文章

mysql数据库的数据类型 -- 4

目录 数据类型 4.1&#xff1a;数据类型的分类 4.2&#xff1a;数值类型 4.3&#xff1a;字符类型 4.5&#xff1a;enum和set类型 数据类型 4.1&#xff1a;数据类型的分类 数值类型 描述 TINYINT [UNSIGNED]整数&#xff0c;占用1字节SMALLINT [UNSIGNED] 整数&#xf…

springboot+vue滴答拍摄影项目(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的滴答拍摄影项目。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌…

JAVA程序员不得不知道的String类

文章目录 目录 文章目录 前言 String类的重要性: 一.String类简介 二.String底层源码剖析 三.字符串构造 三.字符串的比较 四.String类常用方法 1.字符串查找 2.字符串转化 2.1 大小写转换 2.2 数组转字符串 2.3数值和字符串转化 2.4 格式化 ​编辑 3 字符串替换 ​…

【19】SCI易中期刊推荐——计算机 | 人工智能领域(中科院2区)

💖💖>>>加勒比海带,QQ2479200884<<<💖💖 🍀🍀>>>【YOLO魔法搭配&论文投稿咨询】<<<🍀🍀 ✨✨>>>学习交流 | 温澜潮生 | 合作共赢 | 共同进步<<<✨✨ 📚📚>>>人工智能 | 计算机视觉…

实验四 Spark Streaming

实验四 Spark Streaming 1.实验目的 1. 熟悉编写 Spark Streaming 程序处理流数据的方法。 2.实验内容 1. 实时统计贷款金额 模拟解决贷款金额的实时统计问题。假设某外企客户贷款金额数据如下&#xff08;json 格式&#xff09;&#xff0c; 第一项是客户名称&#xff08;…

[Data structure]双链表 | 一文带你了解线性数据结构之一的双链表

⭐作者介绍&#xff1a;大二本科网络工程专业在读&#xff0c;持续学习Java&#xff0c;努力输出优质文章 ⭐作者主页&#xff1a;逐梦苍穹 ⭐所属专栏&#xff1a;数据结构 双链表 1、简介2、常见操作3、时间复杂度4、代码实现思路总览5、Node6、DoubleLinkedList6.1、添加节点…

设计模式——对象创建模式之工厂模式

文章目录 前言一、“单一职责” 模式二、Factory Method 工厂方法1、动机2、模式定义3、伪代码示例4、结构 总结 前言 一、“单一职责” 模式 通过“对象创建”模式绕开new&#xff0c;来避免对象创建&#xff08;new&#xff09;过程中所导致的紧耦合&#xff08;依赖具体类&…

Linux系统之dstat命令的基本使用

Linux系统之dstat命令的基本使用 一、dstat命令介绍1. dstat简介2. dstat特点 二、本次实践介绍1. 本地环境规划2. 本次实践介绍 三、本地环境检查1. 检查操作系统版本2. 查看系统内核版本3. 检查本地yum仓库源状态 三、安装dstat工具1. 搜索dstat软件2. 安装dstat工具3. 查看d…

海康威视 2024届 数字逻辑设计 实习笔试分析

说明 记录一下 5月11日晚&#xff0c;做的海康威视的一场笔试。分享给需要的IC人。 岗位&#xff1a;数字逻辑设计工程师&#xff08;浙江 杭州&#xff09; 转载需要本人同意&#xff01; 我的见解不一定都是准确的&#xff0c;欢迎评论区交流指正~~ 单选题 1、&#xff…

springboot+vue漫画之家系统(源码+文档)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的漫画之家系统。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 &#x1f495;&#x1f495;作者&#xff1a;风歌&a…

TweenMax介绍

GSAP 之 TweenMax 介绍&#xff08;一&#xff09; 一、背景 GreenSock &#xff08;绿袜子&#xff09; GreenSock 是一家做 专业级 JavaScript 动画的公司&#xff0c;主要产品就是其下的 GSAP (GreenSock Animation Platform)&#xff0c;配合着 GSPA 开发了很多专业的动画…

做一个好玩的,给小猫拍照。web 端实现,发布图片,浏览图片。

0&#xff1a;先试试看 hongweizhu.com/#/cat 。 1&#xff1a;上班的路上会路过一家宠物店&#xff0c;里面有一只小猫&#xff0c;给它拍点照片&#xff0c;增加一点乐趣。 2: 使用到的技术 MongoDB 数据库&#xff08;我暂时不想把图片直接放到服务器某个目录上&#xff0c;…

你对这4个ICT行业的网络设备,可能一无所知

晚上好&#xff0c;我是老杨。 上个月给你整了篇安全方向的报告分析&#xff0c;反响不错。 那篇主要是对网络安全的就业前景和怎么入门进行了具体分析&#xff0c;没看过的可以看看&#xff1a;《一不留神&#xff0c;网络安全工程师的岗位需求&#xff0c;破237万了》。 不…

混合精度是如何加速大模型训练的?

混合精度是如何加速大模型训练的&#xff1f; 基础知识回顾float-32从float-32 到float-16 混合精度计算bfloat16 基础知识回顾 float-32 在深度学习中&#xff0c;通常使用float-32 精度的数值训练模型&#xff0c;其中pytorch默认的也是float-32。 float32&#xff0c;也就…

每日一练 | 华为认证真题练习Day43

1、关于访间控制列表编号与类型的对应关系&#xff0c;下面描述正确的是&#xff08;&#xff09;。 A. 基本的访问控制列表编号范围是1000-2999 B. 二层的访问控制列表编号范围是4000-4999 C. 高级的访间控制列表编号范围是3000-4000 D. 基于接口的访问控制列表编号范围是…

IO + File 详细基础知识

文章目录 IO File一、 File二、IO流2.0 IO流介绍2.1 字节流2.1.1 字节输出流 - FileOutputStream2.1.1.1 write方法2.1.1.2 字节输出流细节2.1.1.3代码实现2.1.1.4 换行与续写 2.1.2 字节输入流 - FileInputStream2.1.2.1 read()方法2.1.2.2 字节输入流细节2.1.2.3 代码实现 2…

PostgreSQL-分布式事务之两阶段提交

什么是ACID 在日常操作中&#xff0c;对于一组相关操作&#xff0c;通常需要其全部成功或全部失败。 在关系型数据库中&#xff0c;将这组相关操作称为“事务”。 在一个事务中&#xff0c;多个插入、修改、删除操作要么全部成功&#xff0c;要么全部失败&#xff0c;这称为…

SpringCloud Nacos 注册配置中心

前言 在微服务架构中&#xff0c;注册中心是核心的基础服务之一。相信不少同学都用过 Dubbo 这个流行分布式框架&#xff0c;很久之前微服务还没这么盛行&#xff0c;Dubbo就提供了比较完善的服务治理功能&#xff0c;而服务治理的实现主要依靠的就是注册中心。 许多同学接触…

Apache Kafka - 生产者内存优化注意事项

文章目录 1. 调优内存池参数2. 限制客户端生产速率3. 减小单条消息大小4. 监控生产者内存和性能5. 评估topic的partition分布6. 增加更多生产者实例7. Kafka升级和更强劲的硬件小结 1. 调优内存池参数 增大batchSize和linger ms,适当延长消息在内存池的最大延迟,减少发送次数。…

【C++初阶】第十二篇:priority_queue的使用与模拟实现

文章目录 priority_queue的使用priority_queue的介绍priority_queue的定义方式priority_queue各个接口的使用 仿函数代码样例使用场景&#xff08;示例&#xff09; priority_queue的模拟实现堆的向上调整算法堆的向下调整算法priority_queue的模拟实现 总结 priority_queue的使…