视图定义:
注:用户访问URL对应的是一个控制器,控制器与模型(数据库)交互,然后把处理完的数据前给视图,视图负责展现数据。
1.视图文件必须保存在模块下view目录下->和控制器名称一致的目录下面,HTML文件必须和控制器中的方法完全一致。
2.视图功能由\think\View类配合视图驱动(也即模板引擎驱动)类一起完成,目前的内置模板引擎包含PHP原生模板和Think模板引擎。
3.内容输出有三种方法,推荐:控制器的
view实例的display方法,输出内容::推荐方法,可读性强。
<?php
namespace app\index\controller;
use think\Controller;
use think\facade\View;
class Demo7 extends Controller
{
//直接将内容输出到页面,不通过模板:3种方法
public function test1()
{
$content = '<h3 style="color: blue">PHP中文网欢迎你</h3>';
//1.控制器的display方法,输出内容
// return $this->display($content);
//2.控制器的view实例的display方法,输出内容::推荐方法,可读性强
return $this->view->display($content);
//3.静态代理类view方式,输出内容
// return View::display($content);
}
//使用视图将数据进行输出:fatch()
public function test2()
{
//模板变量赋值:assign()
//1.普通变量
$this->view->assign('name','mhr');
$this->view->assign('age','99');
//2.批量赋值
$this->view->assign([
'sex'=>'男',
'salary'=>666
]);
//2.数组输出
$this->view->assign('goods',[
'id'=>1,
'name'=>'手机',
'model'=>'mate10',
'price'=>6500,
]);
//3.输出对象
$obj = new \stdClass();
$obj->course = 'php';
$obj->lecture = 'zhangsan';
$this->view->assign('info',$obj);
//4.常量输出
define('SITE_NAME','PHP中文网');
//在模板中输出数据
//模板默认的目录位于当前模块的View目录,模板文件默认位于当前控制器命名的目录中,即模块/view下面
return $this->view->fetch();
}
}
模板文件示例:
{$name}<br>
{$age}<br>
{$sex}<br>
{$salary}<br>
<hr>
{//输出数组}<br>
{$goods.id}<br>
{$goods.name}<br>
{$goods.model}<br>
{$goods.price}<br>
<hr>
{//输出对象}<br>
{$info->course}<br>
{$info->lecture}<br>
<hr>
{//输出常量}<br>
{$Think.const.SITE_NAME}
<hr>
{//输出PHP系统常量}<br>
{$Think.const.PHP_VERSION}<br>
{$Think.const.PHP_OS}<br>
<hr>
{//输出系统变量}<br>
{$Think.server.php_self}<br>
{$Think.server.session}<br>
{$Think.server.get.name}<br>
{$Think.server.post.name}<br>
<hr>
{//输出TP配置}<br>
{$Think.config.database.hostname}<br>
<hr>
{//输出请求变量}<br>
{$Request.get.name}<br>
{$Request.post.name}<br>
{$Request.param.name}<br>
{$Request.path}<br>
{$Request.root}<br>
{$Request.root.true}<br>
{$Request.controller}<br>
{$Request.action}<br>
{$Request.host}<br>