ThinkPHP5 模板渲染

来源:互联网 发布:xampp怎么切换php版本 编辑:程序博客网 时间:2024/05/16 17:14
全局模板变量

从  5.0.4+版本开始,支持全局的模板变量赋值操作,可以在任何地方进行模板变量赋值,
而不仅仅只能在控制器方法中赋值,下面举个例子,我们在应用的公共文件中添加下面代码:

// 赋值全局公共的模板变量
\think\View::share('base','全局模板变量');  
\think\View::share(['var1'=>'value1','var2'=>'value2']);

控制器代码如下:
<?php

namespace app\index\controller;
class Index
{
    public function index()
    {
        // 使用助手函数批量赋值模板变量          
        return view('', ['name' => 'thinkphp', 'email' => 'thinkphp@qq.com']);
    }
}

最终模板渲染输出的时候,全局模板变量会合并到视图动态赋值的模板变量中一起渲染输出。
我们把模板文件修改下看下效果:

{$base}:{$var1}|{$var2}  名称:{$name}  邮箱:{$email}

访问后输出结果为:
全局模板变量:value1|value2名称:thinkphp  邮箱:thinkphp@qq.com


全局模板变量赋值比较适合在扩展中对模板进行赋值,关于更多的如何使用模板标签和输出变
量请参考官方的完全开发手册中的模板部分。
输出替换

模板输出替换的作用是完成模板渲染输出内容中的特殊字符串的替换操作,比如定义一些特殊的路径。
输出替换可以在应用配置或者模块配置文件中设置view_replace_str参数,例如:

// 视图输出字符串内容替换
'view_replace_str'       => [
'__ROOT__'      =>  request()->root() ,    
'__STATIC__'    =>  request()->root() . '/static',    
'__CSS__'       =>  request()->root() . '/static/css',    
'__JS__'        =>  request()->root() . '/static/js',  ],


V5.0.4+版本开始,ThinkPHP已经内置支持了上述的几个标签,无需重新定义,如果自定义就是覆盖默认规则。
很多开发者吐槽配置  view_replace_str参数无效,一般是因为自己手动实例化的时候没有获取该配置值传入,
继承系统的控制器基类或者使用  view助手函数都会自动传入该配置参数。

模板渲染

模板渲染输出根据实例化视图方式的不同,也有不同的方式,请根据你的情况选择下面不同的模板渲染方式,
不过无论采用什么方式,模板渲染的规则是一致的。
如果你继承了系统的  think\Controller的话,直接调用控制器的  fetch方法进行渲染,如果你手动实例化视
图类的话,就调用视图类的  fetch方法,用法如下。
fetch('模板文件','模板变量(数组)','替换规则(数组)')


模板文件(可选)的规则支持下面几种:
用法    描述
留空    自动定位当前操作的模板文件
/操作    从视图根目录开始读取模板文件
[模块@][控制器/][操作]    常用写法,支持跨模块
完整的模板文件名    直接使用完整的模板文件名(包括模板后缀)
模板变量(可选)直接传入你的模板变量数组即可,如果已经通过  assign方法赋值了,这里并不需要。
模板替换(可选)直接传入你的模板替换数组即可,效果和模板替换配置一样。
下面是一个实际的例子:
<?php
namespace app\index\controller;
use think\Controller;

class Index extends Controller
{
    public function index()
    {
        // 渲染模板输出          
        return $this->fetch(
            'index/hello',
            [
                'name' => 'thinkphp',
                'email' => 'thinkphp@qq.com'
            ]
        );
    }
}


如果使用  view助手函数的话,用法如下:
view('模板文件','模板变量(数组)','替换规则(数组)')

或者使用
view('模板文件')->assign('模板变量(数组)')->replace('替换规则(数组)')


助手函数的模板渲染参数和fetch方法是一致的。
使用  view助手函数的话还可以使用assign(模板变量赋值)和replace方法(输出内容替换):
<?php

namespace app\index\controller;
class Index
{
    public function index()
    {
        // 使用助手函数批量赋值模板变量          
        return view()->assign([
            'name' => 'thinkphp',
            'email' => 'thinkphp@qq.com'
        ])->replace([
            '__ROOT__' => request()->root(),
            '__STATIC__' => request()->root() . '/static',
            '__CSS__' => request()->root() . '/static/css',
            '__JS__' => request()->root() . '/static/js',
            ]);
    }
}


原创粉丝点击