Thinkphp6视图介绍

news/2024/11/22 0:47:36/

一.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.ppmy.cn/news/1548894.html

相关文章

Xcode 项目内 OC 混编 Python,调用 Python 函数,并获取返回值(基于 python 的 c函数库)

1:新建 Xcode 工程 2:工程添加 Python.framework 1597052861430.jpg 3:在当前工程下新建一个名字为 googleT 的 python 文件(googleT.py) 1597052584962.jpg 在 googleT.py 文件内写入一个测试 python 函数 def lgf_translate( str ):var1 Hello World!print (str var1)retu…

TypeScript 与 JavaScript 的主要区别及使用场景

TypeScript 介绍 TypeScript 是 JavaScript 的超集&#xff0c;增加了静态类型检查的能力&#xff0c;使开发者在编写代码时能够提前发现潜在的类型错误。它是由 Microsoft 维护的&#xff0c;旨在增强 JavaScript 的开发体验。 主要区别&#xff1a; 类型系统&#xff1a; T…

Jav项目实战II基于微信小程序的助农扶贫的设计与实现(开发文档+数据库+源码)

目录 一、前言 二、技术介绍 三、系统实现 四、文档参考 五、核心代码 六、源码获取 全栈码农以及毕业设计实战开发&#xff0c;CSDN平台Java领域新星创作者&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。获取源码联系方式请查看文末 一、前言 在当前社会…

GitHub 开源项目 Puter :云端互联操作系统

每天面对着各种云盘和在线应用&#xff0c;我们常常会遇到这样的困扰。 文件分散在不同平台很难统一管理&#xff0c;付费订阅的软件越来越多&#xff0c;更不用说那些烦人的存储空间限制了。 最近在 GitHub 上发现的一个开源项目 Puter 彻底改变了我的在线办公方式。 让人惊…

Vue3 + Vite 项目引入 pinia 和 pinia-plugin-persistedstate

文章目录 一、Pinia1. 简介2. Pinia 的主要特点 二、Pinia Plugin PersistedState1. 简介2. 插件特点3. PersistedState 配置项4. 示例&#xff1a;选择性持久化字段5. 示例&#xff1a;自定义序列化器 三、如何在项目中使用 Pinia 和 PersistedState1. 安装 Pinia 和 Persiste…

MySQL-关键字执行顺序

&#x1f496;简介 在MySQL中&#xff0c;SQL查询语句的执行遵循一定的逻辑顺序&#xff0c;即使这些关键字在SQL语句中的物理排列可能有所不同。 &#x1f31f;语句顺序 (8) SELECT (9) DISTINCT<select_list> (1) FROM <left_table> (3) <join_type> JO…

对原jar包解压后修改原class文件后重新打包为jar

文章目录 背景三种修改方式1.POM中移除原jar中依赖的历史版本2.原jar它不使用pom依赖而是直接放在源码中再编译使用JarEditor 插件对源码进行修改(推荐)使用java-decompiler反编译后修改源码覆盖原class&#xff08;不好用-不推荐直接跳过&#xff09;提醒 参考资料-推荐阅读拓…

C# 反射与动态编程

文章目录 1.反射(Reflection)1.1 什么是反射?1.2 反射的基本操作1.2.1 获取类型信息1.2.2 获取成员信息1.3 调用成员1.4 实例化对象1.5 常见应用场景2.动态编程2.1 什么是动态编程?2.2 dynamic 关键字2.3 动态对象和 ExpandoObject2.4 动态编程的应用场景3.反射与动态编程的…