视图
视图实例化
视图功能由\think\View
类配合视图驱动(模板引擎)类一起完成,目前的内置模板引擎包含PHP原生模板和Think模板引擎。
因为新版的控制器可以无需继承任何的基础类,因此在控制器中如何使用视图取决于你怎么定义控制器。
继承\think\Controller
类
\think\Controller
类的话,则无需自己实例化视图类,可以直接调用控制器基础类封装的相关视图类的方法。
// 渲染模板输出
return $this->fetch('hello',['name'=>'thinkphp']);
下面的方法可以直接被调用:
方法 | 说明 |
---|---|
fetch | 渲染模板输出 |
display | 渲染内容输出 |
assign | 模板变量赋值 |
engine | 初始化模板引擎 |
注意:最常用的assign,fetch
第一步:模板赋值
assign
方法
namespace index\app\controller; //定义一个命名空间
class Index extends \think\Controller //定义一个自己的类Index继承了 think\Controller类
{
public function index()
{
// 模板变量赋值
$this->assign('name','ThinkPHP');
$this->assign('email','thinkphp@qq.com');
// 或者批量赋值
$this->assign([
'name' => 'ThinkPHP',
'email' => 'thinkphp@qq.com'
]);
// 模板输出
return $this->fetch('index');
}
}
第二步:模板渲染
模板文件的写法支持下面几种:
用法 | 描述 |
---|---|
不带任何参数 | 自动定位当前操作的模板文件 |
[模块@][控制器/][操作] | 常用写法,支持跨模块 |
完整的模板文件名 | 直接使用完整的模板文件名(包括模板后缀) |
下面是一个最典型的用法,不带任何参数:
// 不带任何参数 自动定位当前操作的模板文件
return $this->fetch();
表示系统会按照默认规则自动定位模板文件,其规则是:
当前模块/默认视图目录/当前控制器(小写)/当前操作(小写).html
可以在fetch方法里面去写对应的模板名,他回去当前控制器下面去找对应的模板文件
// 指定模板输出
return $this->fetch('edit');
另外:fetch方法支持跨模块的操作
表示调用user控制器下面的user模板
return $this->fetch('user/user');
C:\wamp\www\tp5\application\index\view\user
传入参数法
方法fetch可以传如模板变量
namespace app\index\controller;
class Index extends Controller
{
public function index()
{
//赋值给模板变量
$name = '很难达成';
$email = 'dsiofhwofw@qq.com';
$this->assign('name',$name);
$this->assign('email',$email);
return $this->fetch('index',【
‘name’=>'Thinkphp',
'email' => 'efwfrgrg@qq.com'
】); //第一个参数渲染的模板名字这里index.html
助手函数
如果使用view助手函数渲染输出的话,可以使用下面的方法进行模板变量赋值:
return view('index', [
'name' => 'ThinkPHP',
'email' => 'thinkphp@qq.com'
]);
时间:2018.4.22