ThinkPhp5.0之模块

本文详细介绍了ThinkPhp5.0中的模板定位、模板标签、模板变量输出、模板布局以及模板继承。通过fetch方法解析模板规则,包括模块、控制器和操作的调用方式。在模板标签部分,讲解了普通标签和标签库标签的使用,以及如何输出数组和对象的属性。还阐述了模板布局的全局配置和模板继承的概念,如何重载和删除基础模板的区块。

一、模板定位

1、模板渲染规则

模板渲染使用\think\View类的fetch方法,渲染规则为:

模块@控制器/操作

如果没有调用任何参数的fetch方法:

return $view->fetch();

如果指定操作调用:

return $view->fetch('模板名称');

如果调用控制器的某个模板文件使用:

return $view->fetch('控制器/模板');

如果跨模块调用模板

return $view->fetch('模块@控制器/模板');

如果全路径模板调用:

return $view->fetch(APP_PATH.request()->module().'/文件所在的位置');


二、模板标签

模板内的标签我们都是可以在配置文件【application/ config.php】中进行修改的。

普通标签


我们使用的开始、结束标签,因此我们的普通标签例如{$name}

标签库标签

标签库标签可以用于模板变量输出、文件包含、条件控制、循环输出等功能,而且完全可以扩展功能。


那么原来的

{eq name="name" value="value"}
相等
{else/}
不相等
{/eq}

就需要改成
<eq name="name" value="value">
相等
<else/>
不相等
</eq>

三、变量输出

如果我们在控制器中模板变量为一个字符串,那么我们在模板中就可以使用{$变量名},来进行输出变量

如果我们在控制器中模板变量为一个数组,那么我们在模板中就可以使用下面的方法输出变量

eg:{$数组.name}、{$data.email}

或    {$data['name']} 、{$data['email']}

如果data变量是一个对象(并且包含name和email两个属性),那么就可以用下面的方式输出

Name:{$data:name}
Email:{$data:email}

或者

Name:{$data->name}
Email:{$data->email}
模板中支持使用多个函数,需要我们用  |   来进行分割。

模板中我们可以给变量输出提供默认值

eg:{$user.nickname|default="你猜"}

在模板中我们可以使用literal标签来防止模板标签被解析。

{literal}
    Hello,{$name}!
{/literal}
上面的{$name}标签被literal标签包含,因此不会被模板引擎解析,会保持原样输出


四、模板布局

全局配置方式

全局配置方式,需要我们修改配置文件【application/config.php】

'template'  =>  [
    'layout_on'     =>  true,
    'layout_name'   =>  '布局入口文件名',
]
开启layout_on后,首先会走一遍布局入口文件名,然后再走我们需要渲染数据的文件。

引入普通文件

{include file="public/header" /}
 {__CONTENT__}
{include file="public/footer" /}
{__CONTENT__},会把解析后的内容替换到layout布局模板文件的content特定字符串

引入模板

{include file="../application/index/view/index/header.html" /}


五、模板继承

每个区块由{block}{/block}标签组成,block标签必须指定name属性来标识当前区块的名称,这个标识在当前模板中应该是唯一的,其中可以包含然和模板内容,其他标签和变量。

{extend name="base" /}
我们可以使用extend来继承文件base.html

在子模板中,可以对基础模板中的区块进行重载定义,如果没有重新定义的话,则表示沿用基础模板中的区块定义,如果定义了一个空的区块,则表示删除基础模板中的该区块内容。在当前子模板中,只能定义区块而不能定义其他的模板内容,否则将会直接忽略,并且只能定义基础模板中已经定义的区块。


评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值