视图目录/[模板主题/]控制器名/操作名+模板后缀
设置默认视图层不是View:
'DEFAULT_V_LAYER' => 'Template', // 设置默认的视图层名称
模板文件的默认后缀的情况是
.html
,也可以通过
TMPL_TEMPLATE_SUFFIX
来配置成其他的。
'TMPL_TEMPLATE_SUFFIX'=>'.tpl'
如果觉得目录结构太深,可以通过设置
TMPL_FILE_DEPR
参数来配置简化模板的目录层次
'TMPL_FILE_DEPR'=>'_'
模块的配置文件中单独定义视图目录:
'VIEW_PATH'=>'./Theme/'
模板赋值
$this->assign('name',$value);
// assign方法赋值给模板
//赋值后,就可以在模板文件中输出变量了,如果使用的是内置模板的话,就可以这样输出: {$name}
模板渲染
display('[模板文件]'[,'字符编码'][,'输出类型'])
调用模板主题功能:
$this->theme('blue')->display('User:edit');
获取模板地址
T([资源://][模块@][主题/][控制器/]操作,[视图分层])
T函数的返回值是一个完整的模板文件名,可以直接用于display和fetch方法进行渲染输出。
Eg:
T('Public/menu');
// 返回 当前模块/View/Public/menu.html
T('blue/Public/menu');
// 返回 当前模块/View/blue/Public/menu.html
T('Public/menu','Tpl');
// 返回 当前模块/Tpl/Public/menu.html
T('Public/menu');
// 如果TMPL_FILE_DEPR 为 _ 返回 当前模块/Tpl/Public_menu.html
T('Public/menu');
// 如果TMPL_TEMPLATE_SUFFIX 为.tpl 返回 当前模块/Tpl/Public/menu.tpl
T('Admin@Public/menu');
// 返回 Admin/View/Public/menu.html
T('Extend://Admin@Public/menu');
// 返回 Extend/Admin/View/Public/menu.html (Extend目录取决于AUTOLOAD_NAMESPACE中的配置)
在display方法中直接使用T函数:
// 使用T函数输出模板
$this->display(T('Admin@Public/menu'));//T函数可以输出不同的视图分层模板
获取内容
------- 需要获取渲染模板的输出内容而不是直接输出
fetch('模板文件' );
*** fetch() 和 display() 的区别
fetch方法渲染后不是直接输出,而是返回渲染后的内容,
渲染内容
show( '渲染内容'[,'字符编码'][,'输出类型'] );
$this->show($content, 'utf-8', 'text/xml');
模板引擎:
只需要设置TMPL_ENGINE_TYPE参数为相关的模板引擎名称即可:
eg:
'TMPL_ENGINE_TYPE' =>'PHP'
模板变量:
普通变量:
配置变量标签起始标记:
'TMPL_L_DELIM'=>'<{',
'TMPL_R_DELIM'=>'}>',
{$var}
//
注意模板标签的
{
和
$
之间不能有任何的空格,否则标签无效。
系统变量:
常量:
{$Think.MODULE_NAME}
配置:
{$Think.config.db_charset}
{$Think.config.url_model}
语言:
{$Think.lang.page_error}
{$Think.lang.var_error}
模板函数:( 函数过滤 )
md5 : {$data[ 'name' ]|md5}
date:{$data['time']|date="y-m-d",###}
substr:{$data['conmtent']|substr=0,3}
****** 支持多个函数过滤 用 | 分割开来
{$name|md5|strtoupper|substr=0,3} 或者
{:substr(strtoupper(md5($name)),0,3)}
默认输出值: 采用 default = "" 来设置。
三元运算:
{$status?'正常':'错误'}
{$info['status']?$info['msg']:$info['error']}
模板内置标签:
Volist标签:通常用于查询数据集(select方法)的结果输出,通常模型的select方法返回的结果是一个二维数组,可以直接使用volist标签进行输出。
<volist name="list" id="vo">
</volist>
name属性表示模板赋值的变量名称,id表示当前的循环变量,可以随意指定
输出查询结果中的部分数据,例如输出其中的第5~15条记录:
<volist name="list" id="vo" offset="5" length='10'>
{$vo.name}
</volist>
输出偶数记录:
<volist name="list" id="vo" mod="2" >
<eq name="mod" value="1">{$vo.name}</eq>
</volist>
Mod属性还用于控制一定记录的换行:
<volist name="list" id="vo" mod="5" >
{$vo.name}
<eq name="mod" value="4"><br/></eq>
</volist>
空的时候输出提示:
<volist name="list" id="vo" empty="暂时没有数据" >
{$vo.id}|{$vo.name}
</volist>
要输出数组的索引,可以直接使用key变量:( 和循环变量不同的是,这个key是由数据本身决定,而不是循环控制的 )
<volist name="list" id="vo" >
{$key}.{$vo.name}
</volist>
Foreach标签:name表示数据源 item表示循环变量。
<foreach name="list" item="vo" >
</foreach>
定义索引的变量名:
<foreach name="list" item="vo" key="k" >
{$k}|{$vo.id}:{$vo.name}
</foreach>
For标签:
<for start="开始值" end="结束值" comparison="" step="步进值" name="循环变量名" >
</for>
开始值、结束值、步进值和循环变量都可以支持变量,开始值和结束值是必须,其他是可选。comparison 的默认值是lt;;name的默认值是i,步进值的默认值是1
IF标签:
<if condition="($name eq 1) OR ($name gt 100) "> value1
<elseif condition="$name eq 2"/>value2
<else /> value3
</if>
1在condition属性中可以支持eq等判断表达式,同上面的比较标签,但是不支持带有”>”、”<”等符号的用法,因为会混淆模板解析
2 condition属性里面使用php代码
Switch标签:
<switch name="变量" >
<case value="值1" break="0或1">输出内容1</case>
<case value="值2">输出内容2</case>
<default />默认情况
</switch>
1 name属性可以使用函数以及系统变量
2 case的value属性可以支持多个条件的判断,使用”|”进行分割
3 case的value属性使用变量