Thinkphp6视图介绍

一.MVC


MVC 软件系统分为三个基本部分:模型(Model)、视图(View)和控制器(Controller)
ThinkPHP6 是一个典型的 MVC 架构
控制器—控制器,用于将用户请求转发给相应的Model进行处理,并根据Model的计算结果向用户提供相应响应视图—为用户提供使用界面,与用户直接进行交互。
模型—承载数据,并对用户提交请求进行计算的模块。

MVC架构程序的工作流程:
(1)用户通过View 页面向服务端提出请求,可以是表单请求、超链接请求、AJAX 请求等
(2)服务端Controller 控制器接收到请求后对请求进行解析,找到相应Model 对用户请求进行处理
(3)Model处理后,将处理结果再交给 Controller
(4)Controller在接到处理结果后,根据处理结果找到要作为向客户端发回的响应View页面。页面经渲染(数据填充)后,再发送给客户端。

二.应用模式访问

项目访问路径:域名/index.php/index/index

index.php 入口文件(可以通过配置伪静态省略)

index 控制器

index 方法

模板路径

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

三.模板渲染

 要使用View,必须先引入think\facade\View 门面类

模板渲染的最典型用法是直接使用fetch方法,不带任何参数,系统会按照默认规则自动定位视图(view)目录下的模板文件,其规则是:控制器名(小写+下划线)/操作名(方法名字).html

3.1简单渲染

自动定位当前控制器视图目录下的index视图文件,view\index\index.html文件

namespace app\user\controller;
use think\facade\View;class Index
{public function index(){// 或者批量赋值View::assign(['name'  => 'ThinkPHP','email' => 'thinkphp@qq.com']);// 模板输出return View::fetch();// 或者//return view();}
}


一个控制器的接口文件(index.php)需要对应view下同名目录中的一个同名HTML文件。
即:创建文件:view/index/index.html与控制器中的接口文件对应,这样控制器接口文件中的渲染代码便会找到这个HTML模板进行渲染。

view代码(注:在app目录下,view目录需要我们手动创建)

注:控制器里面类对应view下面的目录

注:控制器里面方法对应view下面的目录里的静态文件

3.2当前控制器下其他模板

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

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

视图根目录模板
public function index()
{return View::fetch('/index');// 或者return view('/index');}
当前控制器下其他模板

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

public function index()
{return View::fetch('index');// 或者return view('index');}
其他控制器下的模板

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

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

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

相对定位下模板访问

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

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

模板变量

使用assign方法进行全局模板变量赋值,如果你需要单次赋值的话,可以直接用fetch方法传入

模板输出{$name}

视图:模板赋值与模板输出

<?php
declare (strict_types = 1);namespace app\user\controller;
use think\facade\View;class Index
{//第一种输出方法
public function index()
{// 模板变量赋值View::assign('name','ThinkPHP');//把ThinkPHP赋值给name 然后显示到view文件夹下的index.html 中的<view>{$name}</view>View::assign('email','thinkphp@qq.com');// 或者批量赋值View::assign(['name'  => 'ThinkPHP','email' => 'thinkphp@qq.com']);// 模板输出return View::fetch('/index');//加\渲染当前view目录下的html文件,不加\的话他会渲染view\index\index.html文件
}//第二种输出方法 ,这种方法比上面的好用
public function index()
{// 模板输出并变量赋值return View::fetch('/index', ['name'  => 'ThinkPHP','email' => 'thinkphp@qq.com']);
}//第三种输出方法public function index()
{// view()助手函数return view('index', ['name'  => 'ThinkPHP','email' => 'thinkphp@qq.com']);
}}

前端代码

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>user-index</title>
</head>
<body>
姓名:{$name}
<br>
email:{$email}
</div>
</body>
</html>

return View::fetch('/index');

加\渲染当前view目录下的html文件,如果不加\的话他会渲染view\index\index.html文件会显示报错

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

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

相关文章

Ceph client 写入osd 数据的两种方式librbd 和kernel rbd

在Ceph存储系统中&#xff0c;客户端&#xff08;Ceph client&#xff09;写入OSD&#xff08;Object Storage Daemon&#xff09;数据确实可以通过两种主要方式&#xff1a;librbd和kernel rbd。这两种方式各有特点和适用场景&#xff0c;下面将分别进行详细介绍。 librbd方式…

基于大语言模型意图识别和实体提取功能;具体ZK数值例子:加密货币交易验证;

目录 基于大语言模型意图识别和实体提取功能 案例背景 零知识证明过程 具体例子 具体举例(简化) 具体ZK数值例子:加密货币交易验证 定义多项式 承诺 挑战 证明构造 证明验证 结论 zkLLM Zero Knowledge Proofs for Large Language Models 在大模型验证过程中处…

Python小游戏24——小恐龙躲避游戏

首先&#xff0c;你需要安装Pygame库。如果你还没有安装&#xff0c;可以通过以下命令安装&#xff1a; 【bash】 pip install pygame 【python】代码 import pygame import random # 初始化Pygame pygame.init() # 设置屏幕尺寸 screen_width 800 screen_height 600 screen …

C++(Qt)软件调试---内存泄漏分析工具MTuner (25)

C(Qt)软件调试—内存泄漏分析工具MTuner &#xff08;25&#xff09; 文章目录 C(Qt)软件调试---内存泄漏分析工具MTuner &#xff08;25&#xff09;[toc]1、概述&#x1f41c;2、下载MTuner&#x1fab2;3、使用MTuner分析qt程序内存泄漏&#x1f9a7;4、相关地址&#x1f41…

【C#】第6章:用户界面设计 课后习题

文章目录 C# 控件知识详解一、选择题解析二、填充题解析 以下是一篇关于 C#中各类控件知识点的博客文章&#xff1a; C# 控件知识详解 在 C#编程中&#xff0c;各种控件起着至关重要的作用&#xff0c;它们为用户界面提供了丰富的交互功能。本文将详细介绍 C#中一些常见控件的…

QT_CONFIG宏使用

时常在Qt代码中看到QT_CONFIG宏&#xff0c;之前以为和#define、DEFINES 差不多&#xff0c;看了定义才发现不是那么回事&#xff0c;定义如下&#xff1a; 看注释就知道了QT_CONFIG宏&#xff0c;其实是&#xff1a;实现了一个在编译时期安全检查&#xff0c;检查指定的Qt特性…

Python期末复习 | 列表、元组、字典、集合与字符串 | 代码演示

列表、元组、字典、集合与字符串 列表 ​ 列表是Python最重要的内置对象之一&#xff0c;是包含若干元素的有序连续内存空间。当列表增加或删除元素时&#xff0c;列表对象自动进行内存的扩展或收缩&#xff0c;从而保证相邻元素之间没有缝隙。 ​ 在形式上&#xff0c;列表…

Redis下载历史版本

Linux版本&#xff1a; https://download.redis.io/releases/ Windows版本&#xff1a; https://github.com/tporadowski/redis/releases Linux Redis对应gcc版本

8 软件项目管理

软件项目管理 1、软件项目管理概念1.1 软件项目管理内容1.2 软件项目管理的4P要素人员产品过程项目 2、软件项目度量2.1 软件项目度量定义及度量方法2.2 面对规模的度量2.3 面对功能的度量UFC相关的五类组件14个复杂性调节因素 F i F_i Fi​一个功能点开发代码行数 2.4 软件估算…

游戏引擎学习第12天

视频参考:https://www.bilibili.com/video/BV1yom9YnEWY 这节没讲什么东西&#xff0c;主要是改了一下音频的代码 后面有介绍一些alloc 和malloc,VirtualAlloc 的东西 _alloca 函数&#xff08;或 alloca&#xff09;分配的是栈内存&#xff0c;它的特点是&#xff1a; 生命周…

如何保证Redis与MySQL双写一致性

什么是双写一致性问题&#xff1f; 双写一致性主要指在一个数据同时存在于缓存&#xff08;如Redis&#xff09;和持久化存储&#xff08;如MySQL&#xff09;的情况下&#xff0c;任何一方的数据更新都必须确保另一方数据的同步更新&#xff0c;以保持双方数据的一致状态。这一…

STM32设计学生宿舍监测控制系统

目录 前言 一、本设计主要实现哪些很“开门”功能&#xff1f; 二、电路设计原理图 电路图采用Altium Designer进行设计&#xff1a; 三、实物设计图 四、程序源代码设计 五、获取资料内容 前言 随着科技的飞速发展和智能化时代的到来&#xff0c;学生宿舍的安全、舒适…

算法--解决二叉树遍历问题

第一 实现树的结构 class Node(): # 构造函数&#xff0c;初始化节点对象&#xff0c;包含数据和左右子节点 def __init__(self, dataNone): self.data data # 节点存储的数据 self.left None # 左子节点&#xff0c;默认为None self.rig…

【C#】C#编程入门指南:构建你的.NET开发基础

文章目录 前言&#xff1a;1. C# 开发环境 VS的基本熟悉2. 解决方案与项目的关系3. 编辑、编译、链接、运行4. 托管代码和CLR4.1 CLR&#xff1a;4.2 C# 代码第编译过程&#xff08;两次编译的&#xff09; 5. 命名空间6. 类的组成与分析7. C# 的数据类型7.1 值类型7.2 引用类型…

算法闭关修炼百题计划(八)

一半来自力扣的push题单 1.最大连续1的个数II2.长度为k的无重复字符子串3.句子的相似性4.移位字符串分组5.x的平方根6.Z字形变换 1.最大连续1的个数II 给定一个二进制数组nums&#xff0c;如果最多可以翻转一个0&#xff0c;则返回数组中连续1的最大个数 之前是Window&#x…

Python的Matplotlib

介绍&#xff1a; Matplotlib 是一个非常强大的 Python 绘图库&#xff0c;支持多种不同类型的图表。以下是 Matplotlib 支持的一些常见图表类型&#xff1a; 前情提要&#xff1a; from matplotlib import rcParams# 设置支持中文的字体 rcParams[font.sans-serif] [SimHei…

论文笔记(五十六)VIPose: Real-time Visual-Inertial 6D Object Pose Tracking

VIPose: Real-time Visual-Inertial 6D Object Pose Tracking 文章概括摘要I. INTRODACTIONII. 相关工作III. APPROACHA. 姿态跟踪工作流程B. VIPose网络 文章概括 引用&#xff1a; inproceedings{ge2021vipose,title{Vipose: Real-time visual-inertial 6d object pose tra…

K8S containerd拉取harbor镜像

前言 接前面的环境 K8S 1.24以后开始启用docker作为CRI&#xff0c;这里用containerd拉取 参考文档 正文 vim /etc/containerd/config.toml #修改内容如下 #sandbox_image "registry.aliyuncs.com/google_containers/pause:3.10" systemd_cgroup true [plugins.…

LM2 : A Simple Society of Language Models Solves Complex Reasoning

文章目录 题目摘要简介相关工作方法论实验结果结论局限性 题目 LM2&#xff1a;简单的语言模型社会解决复杂推理问题 论文地址&#xff1a;https://aclanthology.org/2024.emnlp-main.920/ 项目地址&#xff1a; https://github.com/LCS2-IIITD/Language_Model_Multiplex 摘要…

STM32从上电开始启动过程详解(上电->分散加载->main函数)

1.硬件复位之后&#xff0c;CPU 内的时序逻辑电路首先完成如下两个工作&#xff08; 程序代码下载到内部 flash 为例&#xff0c;flash首地址 0x0800 0000&#xff09;  将 0x08000000 位置存放的堆栈栈顶地址存放到 SP 中(MSP)。  将 0x08000004 位置存放的向量地址装入 P…