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文件会显示报错

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【idea】更换快捷键

因为个人习惯问题需要把快捷键替换一下。我喜欢用CTRLD删除一下&#xff0c;用CTRLY复制一样。恰好这两个快捷键需要互换一下。 打开file——>setting——>Keymap——>Edit Actions 找到CTRLY并且把它删除 找到CTRLD 并且把它删除 鼠标右键添加CTRLY 同样操作在Delet…

Tiktok对接和内容发布申请流程

这段时间在搞AI生成视频&#xff0c;希望用户能一键发布到Tiktok&#xff0c;因此研究了一下Tiktok的开发者申请流程&#xff0c;发现好复杂&#xff0c;同时也发现Tiktok的开发也跟我一样&#xff0c;挺草台班子的 0、流程简述 废话不多说&#xff0c;Tiktok的开发者申请和…

[刷题]入门1.矩阵转置

博客主页&#xff1a;算法歌者本篇专栏&#xff1a;[刷题]您的支持&#xff0c;是我的创作动力。 文章目录 1、题目2、基础3、思路4、结果 1、题目 链接&#xff1a;洛谷-B2106-矩阵转置 2、基础 此题目主要考察二维数组的掌控能力。 3、思路 观察&#xff0c;可知&#…

ODC 如何精确呈现SQL耗时 | OceanBase 开发者工具解析

前言 在程序员或DBA的日常工作中&#xff0c;编写并执行SQL语句如同日常饮食中的一餐一饭&#xff0c;再寻常不过。然而&#xff0c;在使用命令行或黑屏客户端处理SQL时&#xff0c;常会遇到编写难、错误排查缓慢以及查询结果可读性不佳等难题&#xff0c;因此&#xff0c;图形…

大数据学习15之Scala集合与泛型

1. 概述 大部分编程语言都提供了数据结构对应的编程库&#xff0c;并称之为集合库(Collection Library)&#xff0c;Scala 也不例外&#xff0c;且它还拥有以下优点&#xff1a; 易用&#xff1a;灵活组合运用集合库提供的方法&#xff0c;可以解决大部分集合问题 简洁&#xf…

Linux网络——网络初识

目录 1. 认识协议 2. 协议的分层 3. OSI 七层模型 && TCP/IP 五层(四层)模型 4. 网络传输的基本流程 5. 以太网的通信原理 6. 数据的跨网络传播 7. 认识 IP 地址 ① IP 是什么 ② IP 与 MAC 的关系 ③ 为什么需要 IP 在谈及网络之前&#xff0c;我们要先对学…

数字IC后端低功耗设计实现案例分享(3个power domain,2个voltage domain)

下图所示为咱们社区T12nm A55低功耗实现项目。其实这个项目还可以根据产品的需求做一些改进。改进后项目实现的难度会大大增加。也希望通过今天的这个项目案例分享&#xff0c;帮助到今年IC秋招的同学。 芯片低功耗设计实现upf编写指南&#xff08;附低功耗项目案例&#xff0…

Ubuntu从入门到精通(一)系统安装

Ubuntu从入门到精通&#xff08;一&#xff09; 1 Ubuntu镜像选择 下载Ubuntu 20.04系统ISO镜像 安装 Ubuntu 20.04系统,就必须有 Ubuntu 20.04系统软件安装程序可以通过浏览器访问Ubuntu20.04的官方站点&#xff0c; 然后在导舰栏找划 Dowwnloads->Mirrors链接&#xff…

说说软件工程中的“协程”

在软件工程中&#xff0c;协程&#xff08;coroutine&#xff09;是一种程序运行的方式&#xff0c;可以理解成“协作的线程”或“协作的函数”。以下是对协程的详细解释&#xff1a; 一、协程的基本概念 定义&#xff1a;协程是一组序列化的子过程&#xff0c;用户能像指挥家…

【linux】进程等待与进程替换

&#x1f525;个人主页&#xff1a;Quitecoder &#x1f525;专栏&#xff1a;linux笔记仓 目录 01.进程等待系统调用获取子进程status常用宏使用示例 02.进程替换替换函数关键点解释&#xff1a;代码详细分析execvpe 函数的使用 01.进程等待 任何子进程&#xff0c;在退出的…

认证鉴权框架SpringSecurity-5--权限管理篇

上面两篇我们重点介绍了如何在代码上集成springSecurity&#xff0c;同时完成登录认证和token认证的过程。我们直到springSecurity处理能帮我们完成认证外&#xff0c;还可以帮助我们完成权限校验的工作&#xff0c;这篇我们来重点介绍下springSecurity是如何实现鉴权的。 一、…

RK3588开发板Android12-SDK更新通知

迅为RK3588开发板Android12 SDK升级至RK的android-12.1-mid-rkr14版本 内核版本&#xff1a;升级至 5.10.160 版本&#xff0c;提供更好兼容性和性能。 rkbin 版本&#xff1a;支持最新的 1.17 版本 bin 和 1.46 版本的 bl31。

stm32教程:OLED屏显示字母、汉字、图片工程讲解

早上好啊&#xff0c;大佬们&#xff0c;今天带来的是我们 stm32系列的第一个外设——OLED&#xff0c;相信大家对于OLED都不陌生了吧&#xff0c;这个可以说每一个项目里的必需品了&#xff0c;单片机离不开OLED就像西方离不开耶路撒冷。 在生活中&#xff0c;我们见到的OLED的…

力扣 LeetCode 28. 找出字符串中第一个匹配项的下标(Day4:字符串)

解题思路&#xff1a; KMP算法 需要先求得最长相等前后缀&#xff0c;并记录在next数组中&#xff0c;也就是前缀表&#xff0c;前缀表是用来回退的&#xff0c;它记录了模式串与主串(文本串)不匹配的时候&#xff0c;模式串应该从哪里开始重新匹配。 next[ j - 1 ] 记录了 …

我与Linux的爱恋:进程间通信 匿名管道

​ ​ &#x1f525;个人主页&#xff1a;guoguoqiang. &#x1f525;专栏&#xff1a;Linux的学习 文章目录 匿名管道pipe 匿名管道 匿名管道&#xff08;Anonymous Pipes&#xff09;是Unix和类Unix操作系统中的一种通信机制&#xff0c;用于在两个进程之间传递数据。匿名…

Java之JDBC,Maven,MYBatis

前言 就是用来操作数据库的 1.JDBC快速入门 注意在使用前一定要导入jar包 在模块那里新建目录&#xff0c;新建lib&#xff0c;粘贴复制jar包&#xff0c;我这个jar设置的是模块有效 package test1017;import java.sql.Connection; import java.sql.DriverManager; import…

基于Matlab的碎纸片的自动拼接复原技术

碎纸片的自动拼接复原技术 摘要&#xff1a;破碎文件的拼接在司法物证复原、历史文献修复以及军事情报获取等领域都有着重要的应用。目前发现对碎纸片的拼接大部分由人工完成&#xff0c;准确率较高&#xff0c;但耗费大量人力财力及时间&#xff0c;效率很低。随着计算机技术的…

STM32 设计的较为复杂的物联网项目,包括智能家居控制系统,涵盖了硬件和软件的详细设计。

使用 STM32 设计的较为复杂的物联网项目&#xff0c;包括智能家居控制系统&#xff0c;涵盖了硬件和软件的详细设计。 一、硬件设计 微控制器&#xff1a;选择 STM32F4 系列微控制器&#xff0c;如 STM32F407ZGT6&#xff0c;具有高性能和丰富的外设资源。 传感器模块&#x…

1.7 JS性能优化

从输入url到页面加载完成都做了些什么 输入 URL - 资源定位符 http://www.zhaowa.com - http 协议 域名解析 https://www.zhaowa.com > ip 1. 切HOST&#xff1f; > 浏览器缓存映射、系统、路由、运营商、根服务器 2. 实际的静态文件存放&#xff1f; 大流量 > 多个…

LPDDR4芯片学习(四)——DDR Training

一、ZQ Calibration DDR 学习时间 (Part B - 6)&#xff1a;DRAM ZQ 校正 - 知乎 (zhihu.com) 从原理上解释什么是DDR的ZQ校准&#xff1f; - 知乎 (zhihu.com) LPDDR4的训练(training)和校准(calibration)--ZQ校准(Calibration)_wonder_coole-腾讯云开发者社区 01 ZQ校准的…