视图之模板赋值和模板渲染

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_41665015/article/details/80044397

视图

视图实例化

视图功能由\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','[email protected]');
        // 或者批量赋值
        $this->assign([
            'name'  => 'ThinkPHP',
            'email' => '[email protected]'
        ]);
        // 模板输出
        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 = '[email protected]';
        $this->assign('name',$name);
        $this->assign('email',$email);  

        return $this->fetch('index',【

        ‘name’=>'Thinkphp',

            'email' => '[email protected]'

】); //第一个参数渲染的模板名字这里index.html

助手函数

如果使用view助手函数渲染输出的话,可以使用下面的方法进行模板变量赋值:

return view('index', [
    'name'  => 'ThinkPHP',
    'email' => '[email protected]'
]);
时间:2018.4.22

猜你喜欢

转载自blog.csdn.net/qq_41665015/article/details/80044397