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

视图

视图实例化

视图功能由\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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值