您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
thinkphp3.2.1学习笔记-模板基础[下]
发布时间:2017-09-19 11:29:28编辑:雪饮阅读()
模板中使用三元运算符:
<{$user->age ? '有值' : '无值'}>
模板包含:
首先在view目录中建立一个public目录,然后在public目录中分别建立header.html和footer.html并分别写入文件内容如:
<div>my is header</div>
<div>my is footer</div>
然后模板中引入:
<include file="public/header" />
<{$user->age ? '有值' : '无值'}>
<include file="public/footer" />
模板中使用注释:
<{//我是单行注释}>
<{/*我是多行注释*/}>
模板继承:
一个控制器中有两个方法index和select都是调用默认display即以各自方法名为模板,而我想做的是它们两个模板公用头部和底部,但对于头部title可以单独设定。
首先在view中建立public目录并建立base.html如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title><block name="title">标题</block></title>
</head>
<body>
<include file="public/header" />
<block name="main"></block>
<include file="public/footer" />
</body>
</html>
建立header.html如下:
<div>my is header</div>
建立footer.html如下:
<div>my is footer</div>
然后建立上面控制器中的index模板文件:
<extend name="public/base" />
<block name="title">index标题</block>
<block name="main">这里做页面的布局设计,此处的main块是继承base的main块</block>
最后建立select的模板文件:
<extend name="public/base" />
<block name="title">select标题</block>
<block name="main">这里做页面的布局设计,此处的main块是继承base的main块</block>
模板布局:
和模板继承类似:
在view的public中建立layout.html:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>标题</title>
</head>
<body>
<include file="public/header" />
{__CONTENT__}
<include file="public/footer" />
</body>
</html>
清空之前模板继承中的index模板和select模板并填充如下:
index模板:
这是index的内容区域
select模板内容:
这是select的内容区域
打开应用下的公共配置文件添加以下配置:
//打开全局配置功能,并引入基础页
'LAYOUT_ON'=>true,
'LAYOUT_NAME'=>'Public/layout',
这样以来模板布局就设计好了
模板布局中使用的用于存储内容的变量是{__CONTENT__}其实这个变量也可以替换为其它变量,但需要在配置文件中设置,如:
'TMPL_LAYOUT_ITEM'=>'{__REPLACE__}',
此时模板中用于存储内容的变量可以是{__REPLACE__}了
如果子模板不想载入基础页,则可以在子模板中顶部添加代码:
{__NOLAYOUT__}
模板布局-标签方式:
在上面配置文件中清除掉以下:
//打开全局配置功能,并引入基础页
//'LAYOUT_ON'=>true,
//'LAYOUT_NAME'=>'Public/layout',
//'TMPL_LAYOUT_ITEM'=>'{__REPLACE__}',
修改layout中的用于存储内容的变量为默认的{__CONTENT__}
模板中直接用<layout name="public/layout" />引入基础页,如select模板中:
<layout name="public/layout" />
这是select的内容区域
如果内容变量不想使用默认的{__CONTENT__}则layout(此时配置文件中不需要改动)中如:
{__REPLACE__}
模板中如引入基础页的语句修改如<layout name="public/layout" replace="{__REPLACE__}"/>
模板布局-layout控制布局:
在标签方式时将模板中引入基础页的语句清除,然后在该模板所属的控制器中添加
layout(true);
如果你的配置文件中有'DEFAULT_THEME'=>'default',则需要将你的layout文件移动到view下的default的直属目录中
控制器中也可以指定为defautl下的子目录,如:
layout('public/layout');
这样就将基础页放在了default的public中了。
再将layout中的内容变量修改为默认的{__CONTENT__}
以下语句可以和逻辑业务结合以实现根据条件来决定是否引入基础页:
layout('public/layout');
layout(false);
模板替换:
__ROOT__:会输出当前网址的地址,不含域名,如果你的项目是直接locahost访问而不是"localhost/文件夹名"访问,则会输出为空
__APP__:输出当前应用的url地址,不含域名
__MODULE__:输出当前模块的url地址,不含域名
__CONTROLLER__(或者__URL__兼容考虑):输出当前控制器的url地址,不含域名
__ACTION__:输出当前操作的url地址不含域名
__SELF__:输出当前页面url
__PUBLIC__:输出当前网站的公共目录
模板替换中的变量可以更改也可以新增变量,需要在配置文件中设置如:
'TMPL_PARSE_STRING'=>array(
'__PUBLIC__'=>'/Common',
'__UPLOAD__'=>'/Uploads',
),
如果某个变量不存在,则会直接输出该语句本身
关键字词:thinkphp3.2.1,模板