澳门威利斯人_威利斯人娱乐「手机版」

来自 网络资讯 2019-07-13 18:56 的文章
当前位置: 澳门威利斯人 > 网络资讯 > 正文

模版引擎和模板常用参数设置,x中display方法及

1.模板赋值

正文实例陈述了thinkphp3.x中display方法及show方法的用法。分享给我们供大家参谋,具体如下:

1.1  模版引擎,模版定义

倘若要在模板中输出变量,必须在在调整器中把变量传递给模板,系统提供了assign方法对模板变量赋值,无论何种变量类型都合併使用assign赋值。

经过前边的篇章在询问了调节器和模型操作后,大家初阶熟习视图部分,ThinkPHP中的视图首要就是指模板文件和模板引擎,本篇首先理解下模板文件以及是怎么进展渲染输出的。

为了对模板文件越来越实惠的田间管理,ThinkPHP对模板文件举行目录划分,暗许的沙盘文件定义准绳是:

$this->assign('name',$value);  // 下面的写法是等效的  $this->name = $value;

一、模板定义

模板目录/[分组名/][模板宗旨/]模块名/操作名 模板后缀

assign方法必须在display和show方法以前调用系统变量能够因此特有的标签输出,没有须要赋值模板变量。

为了对模板文件进一步平价的管制,ThinkPHP对模板文件进行目录划分,默许的模版文件定义法则是:

模板目录暗许是项目下边包车型地铁Tpl, 当定义分组的景色下,会服从分组名分开子目录,新版模芭苴点默许是空(表示不启用模大头芭蕉点成效),模板宗旨效能是为着多模板切换而设计的,假若有八个模板大旨的话,能够用DEFAULT_THEME参数设置私下认可的模板主旨名。

赋值后,就能够在模板文件中输出变量了,假若应用的是放手模板的话,就可以如此输出: {$name}

模板目录/[分组名/][模板核心/]模块名/操作名 模板后缀

在各类模板主旨下边,是以项目标模块名字为目录,然后是各样模块的具体操作模板文件,例如:

譬喻要同不平时候输出多个模板变量,能够运用上边包车型大巴情势:

模板目录默许是体系上面包车型地铁Tpl, 当定义分组的意况下,会遵照分组名分开子目录,新版模板核心暗许是空(表示不启用模板大旨成效),

User模块的add操作 对应的模版文件就活该是:

$array['name']    =    'thinkphp';  $array['email']   =    'liu21st@gmail.com';  $array['phone']   =    '12335678';  $this->assign($array);

模板核心作用是为了多模板切换而安插的,纵然有四个模板核心的话,可以用DEFAULT_THEME参数设置暗许的模板大旨名。

Tpl/User/add.html

那般,就足以在模板文件中还要输出name、email和phone多个变量。

在各样模板核心上面,是以类别的模块名叫目录,然后是各个模块的具体操作模板文件,举例:

模板文件的暗中同意后缀的动静是.html,也能够经过TMPL_TEMPLATE_SUFFIX来布置成别的的。当然,分组作用也提供了TMPL_FILE_DEP福睿斯参数来安顿简化模板的目录档期的顺序。

 

User模块的add操作 对应的模板文件就相应是:

例如 TMPL_FILE_DEP奥德赛尽管布置成“_”的话,暗中同意的沙盘文件就改为了:

2.模板渲染

Tpl/User/add.html

Tpl/Home/User_add.html

渲染模板输出最常用的是应用display方法,调用格式:

模板文件的暗中认可后缀是.html,也能够透过TMPL_TEMPLATE_SUFFIX来安插成任何的。举个例子,大家得以安顿:

 

   display('[模板文件]'[,'字符编码'][,'输出类型'])

'TMPL_TEMPLATE_SUFFIX'=>'.tpl'

1.2  模版引擎,模版赋值

模板文件的写法支持上边二种:

概念后,User模块的add操作 对应的模板文件就形成是:

要在模板中输出变量,必须在在Action类中把变量传递给模板,视图类提供了assign方法对模板变量赋值,无论何种变量类型都统一行使assign赋值。

// 不带任何参数 自动定位当前操作的模板文件  $this->display();

Tpl/User/add.tpl

$this->assign('name',$value);  

系统遵照默许法规自动定位模板文件,其法则是:

尽管项目启用了模块分组成效(要是User模块属于Home分组),那么默许对应的模板文件恐怕成为 :

 //下边包车型大巴写法是同样的

万一当前向来不启用模板大旨则一定到:当前模块/默认视图目录/当前控制器/当前操作.html,若果有启用模板大旨则一定到:当前模块/默认视图目录/当前主题/当前控制器/当前操作.html,经常暗许的视图目录是View。

Tpl/Home/User/add.html

$this->name = $value;  

内定模板输出,如下:

分组情势上面,假若认为目录结构太深,能够通过安装TMPL_FILE_DEPEvoque参数来布署简化模板的目录等级次序,譬喻设置:

 若是要同期输出两个模板变量,能够采取上面包车型大巴主意:

//调用当前控制器视图目录下的edit.html模板。  $this->display('edit');
'TMPL_FILE_DEPR'=>'_'
$array['name']    =    'thinkphp';    $array['email']    =    'liu21st@gmail.com';    $array['phone']    =    '12335678';    $this->assign($array);  

调用别的调整器视图目录下的模版,如下:

暗中同意的模版文件就造成了:

这么,就可以在模板文件中何况输出name、email和phone多少个变量。

//调用Member控制器视图目录下的read.html模板  $this->display('Member:read');

Tpl/Home/User_add.html

澳门威尼斯网址 , 

渲染输出无需写模板文件的渠道和后缀,确切地说,那当中的调节器和操作并不一定必要有实在对应的调节器和操作,只是一个索引名称和文件名称而已,举例,你的类型里面也许一直未曾Public调控器,更从未Public调节器的menu操作,但是一样能够使用 $this->display('Public:menu'); 输出这么些模板文件。

多亏因为系统有这般一种模板文件自动识别的准则,所以给大家的模板渲染输出带来了简化。

1.3  模版引擎,模版输出

调用别的模块下的模版,如下:

二、模板渲染

模板变量赋值后就供给调用模板文件来输出相关的变量,模板调用通过display方法来贯彻。大家在操作方法的尾声选择:

$this->display("Login@Test:edit"); //如果当前模块是Home,表示调用Login模块下Test控制器视图目录下的edit.html模板。

模板定义后就足以由此display和show方法来渲染输出。个中display方法要求大家有定义模板文件,而show方法则是平昔渲染内容输出。

$this->display();  

display方法扶助在渲染输出的时候钦命输出编码和项目,举个例子,能够钦赐编码和项目:

最常用的是display方法,调用格式:

 就足以出口模板,根据后边的沙盘定义准则,因为系统会遵从暗中同意法则自动定位模板文件,所以常常display方法没有供给带别的参数就可以输出对应的模板,那是模板输出的最简便的用法。
政工业总会有特例,可能根本无需按模块实行分目录贮存,然则display方法总是可以帮您化解难点。
Display方法提供了三种准绳让您能够随便的出口须求的模板,无论你的模板文件在哪些地点。
下边来看具体的用法:

$this->display('read', 'utf-8', 'text/xml');

第一种:

一、调用当前模块的别的操作模板

格式:display('操作名')
举例,借使当前操作是User模块上边包车型客车read操作,大家供给调用User模块的edit操作模版,使用:

    $this->display('edit');  

 无需写模板文件的路线和后缀。

表示输出XML页面类型。编码及项目是通过http响应头中钦命的:

display('[主题:][模块:][操作]'[,'字符编码'][,'输出类型'])

二、调用其余模块的操作模板

格式:display('模块名:操作名')
譬如,当前是User模块,大家供给调用Member模块的read操作模版,使用:

    $this->display('Member:read');  

 这种方法也无需写模板文件的渠道和后缀,严峻来讲,那其间的模块名和操作名并不一定要求有对应的模块或然操作,只是四个索引名称和文件名称而已,比如,你的连串里面只怕根本未曾Public模块,更从未Public模块的menu操作,可是同样可以使用

    $this->display('Public:menu');  

 输出这几个模板文件。通晓了这些,模板输出就清清楚楚了。

澳门威尼斯网址 1

第二种:

三、调用其余核心的操作模板

格式:display('主题名:模块名:操作名')
比如说大家要求调用Xp焦点的User模块的edit操作模版,使用:

    $this->display('Xp:User:edit');  

 这种情势索要钦赐模块和操作名

 

display('完整的沙盘文件名'[,'字符编码'][,'输出类型'])

四、直接全路径输出模板

格式:display('模板文件名')
比方,大家直接出口当前的Public目录下边的menu.html模板文件,使用:

    $this->display('./Public/menu.html');  

 这种办法供给钦定模板路线和后缀,这里的Public目录是投身当前项目进口文件地点下边。假若是别的的后缀文件,也支撑直接出口,例如:

    $this->display('./Public/menu.tpl');  

 只要./Public/menu.tpl是叁个实际上存在的模版文件。若是利用的是相对路线的话,要注意脚下地方是对峙于项目标输入文件,并非模板目录。

作业总有特例,假如的模版目录是自定义的,可能根本没有要求按模块进行分目录存放,直接传入模板文件名就可以,举个例子:

下边是二个最卓越的用法,不带其余参数:

五、直接解析内容

Action类的display方法假使传入第三个参数,表示不读取模板文件而是一贯剖析内容。比方:

    $this->assign('foo','ThinkPHP');      $this->show('Hello, {$foo}!');  

 会在页面输出: Hello,ThinkPHP!
一贯出口的开始和结果依然支撑模板布局功效。
show方法也足以支撑钦命编码和出口格式,比如:

    $this->show($content, 'utf-8', 'text/xml');  

 事实上,display方法还会有别的的参数和用法。
突发性有个别模板页面大家要求输出钦定的编码,并非私下认可的编码,能够应用:

    $this->display('Member:read', 'gbk');  

 恐怕输出的沙盘文件不是text/html格式的,而是XML格式的,能够用:

    $this->display('Member:read', 'utf-8', 'text/xml');  

 假使您的网址输出编码不是暗中同意的编码,能够使用:

    'DEFAULT_CHARSET'=> 'gbk'  

 如若要出口XML格式的,能够用:

   'TMPL_CONTENT_TYPE'=> 'text/xml'  

 

1.4   模板替换

在拓展模板输出从前,系统还恐怕会对渲染的模版结果实行部分模板的特别字符串替换操作,约等于贯彻了模版输出的更迭和过滤。模板替换适用于具备的模版引擎,满含原生的PHP模板。这些机制得以使得模板文件的定义特别有利,暗许的更迭准绳有:

!-Public-!: 会被替换来当前项目的公物模板目录 平日是 /项目目录/Tpl/当前宗旨/Public/

!-TMPL-!: 会替换到项指标沙盘目录 平日是 /项目目录/Tpl/当前宗旨/

(注:为了安插安全考虑,!-Public-!和!-TMPL-!不再提出利用)

!-PUBLIC-!:会被替换来当前网址的国有目录 常常是 /Public/

!-ROOT-!: 会替换到当前网址的地方(不含域名)

!-APP-!: 会替换到当前项目标U奥德赛L地址 (不含域名)

!-GROUP-!:会替换来当前分组的U翼虎L地址 (不含域名)

!-URL-!: 会替换来当前模块的U本田UR-VL地址(不含域名)

!-ACTION-!:会替换到当前操作的U普拉多L地址 (不含域名)

!-SELF-!: 会替换到当前的页面U中华VL

留意那个特殊的字符串是严苛分化大小写的,况兼那个卓绝字符串的交替法则是能够改动或许扩充的,大家只须求在档次布局文件中配置TMPL_PARSE_STPRADOING就足以做到。要是有同样的数组索引,就能够转移系统的默许准则。比如:

'TMPL_PARSE_STRING'  =>array(         '!-PUBLIC-!' => '/Common', // 更改默认的__PUBLIC__ 替换规则         '__JS__' => '/Public/JS/', // 增加新的JS类库路径替换规则         '__UPLOAD__' => '/Uploads', // 增加新的上传路径替换规则    )  

有了模版替换准绳后,页面上具备的!-PUBLIC-! 字符串都会被沟通,那假使真的要求输出!-PUBLIC-! 字符串到模板呢,大家能够透过扩充替换法则的方式,举个例子:

'TMPL_PARSE_STRING'  =>array(         '--PUBLIC--' => '!-PUBLIC-!', // 采用新规则输出__PUBLIC__字符串    )  

如此那般扩大替换法则后,若是我们要出口!-PUBLIC-! 字符串,只要求在模板中增多--PUBLIC--,其余替换字符串的输出方式临近。

 

2  模版常用参数

模板引擎设置

配置名              说明              默认值

TMPL_CONTENT_TYPE     暗许模板输出类型           text/html

TMPL_ACTION_E奇骏RO奥迪Q5     默许错误跳转对应的模版文件      系统模板目录下的dispatch_jump.tpl

TMPL_ACTION_SUCCESS    暗中认可成功跳转对应的模板文件      同上 

TMPL_EXCEPTION_FILE     极度页面包车型大巴模板文件          系统模板目录下的think_exception.tpl

TMPL_DETECT_THEME     自动侦测模板大旨           false

TMPL_TEMPLATE_SUFFIX    暗中同意模板文件后缀           .html

TMPL_FILE_DEP奥迪Q5      模板文件模块与操作之间的分割符,只对品种分组安排有效    /

'TMPL_ENGINE_TYPE'      退换模版引擎

TMPL_PARSE_STLacrosseING'    修改定义模版替换法规

 

3 变量输出

我们已经知道了在Action中应用assign方法能够给模板变量赋值,赋值后怎么在模板文件中输出变量的值吗?
一经我们在Action中赋值了四个name模板变量:

$name = 'ThinkPHP';  $this->assign('name',$name);  

 使用内置的模板引擎输出变量,只需求在模板文件使用:

{$name}  

 模板编写翻译后的结果正是

<?php echo($name);?>  

 最终运维的时候就可以在标签地点展现ThinkPHP的出口结果。
留意模板标签的{和$之间无法有其余的空格,不然标签无效。普通标签暗中认可起首标志是 {,停止标识是 }。也足以由此设置TMPL_L_DELIM和TMPL_R_DELIM进行转移。举例,大家在等级次序布局文件中定义:

'TMPL_L_DELIM'=>'<{',  'TMPL_R_DELIM'=>'}>',  

 那么,上面包车型地铁变量输出标签就活该改成:

<{$name}>  

 后边的剧情我们都以私下认可的竹签定义来申明。assign方法里面的首先个参数才是模板文件中运用的变量名称。倘诺改成上面包车型地铁代码:

$name = 'ThinkPHP';  $this->assign('name2',$name);  

 再利用{$name} 输出就不算了,必须采纳 {$name2}本事出口模板变量的值了。

借使大家要求把二个用户数量对象赋值给模板变量:

$User = M('name');  $user = $User->find(1);  $this->assign('user',$user);  

 相当于说$user其实是二个数组变量,我们得以应用上边包车型客车法子来输出相关的值:

{$user['name']}//输出用户的名称  {$user['email']} //输出用户的email地址  

 固然$user是三个目的并不是数组的话,

$User = M('name');  $User->find(1);  $this->assign('user',$User);  

 能够采用下边包车型大巴艺术出口相关的属性值:

{$user:name}// 输出用户的名称  {$user:email} // 输出用户的email地址  

 3.1本子之后,类的性子输出形式具备调治,辅助原生的PHP对象写法,所以地点的价签必要改成:

{$user->name}// 输出用户的名称  {$user->email} // 输出用户的email地址  

 为了便利模板定义,还足以支撑点语法,比方,上边的

{$user['name']}// 输出用户的名称  {$user['email']} // 输出用户的email地址  

 能够改成

{$user.name}  {$user.email}  

 因为点语法暗许的输出是数组情势,所以地点二种格局是在平素不计划的动静下是同样的。大家能够经过配备TMPL_VAR_IDENTIFY参数来决定点语法的输出效果,以上边包车型客车出口为例:

{$user.name}  

 如果TMPL_VAR_IDENTIFY设置为array,那么
{$user.name}和{$user['name']}等效,也正是出口数组变量。
如果TMPL_VAR_IDENTIFY设置为obj,那么
{$user.name}和{$user:name}等效,也便是出口对象的习性。
如果TMPL_VAR_IDENTIFY留空的话,系统会自动判别要出口的变量是数组依然对象,这种办法会鲜明水准上海电影制片厂响功效,並且只支持二维数组和两级对象属性。
只即使多维数组恐怕多层对象属性的出口,能够动用下边的定义格局:

{$user.sub.name}// 使用点语法输出  

 或许采用

{$user['sub']['name']}// 输出三维数组的值  {$user:sub:name}// 输出对象的多级属性  

 


$this->display('./Template/Public/menu.html');
$this->display();

这种措施须要内定模板路线和后缀,这里的Template/Public目录是放在当前项目进口文件地点上边。如果是任何的后缀文件,也协助直接出口。

代表系统会遵从暗中认可准则自动定位模板文件,所以日常display方法没有须要带其余参数就可以输出对应的模板,那是模板输出的最简便的用法。

要注意模板文件地方是对峙于项目标入口文件index.php,实际不是模板目录。

假设未有依据模板定义准则来定义模板文件,可能自己索要调用别的模块上面包车型客车某部模板,能够选择:

3.获得模板地址

$this->display('edit'); 

T函数用于转移模板文件名,用法:
    T([资源://][模块@][主题/][控制器/]操作,[视图分层])
T函数的重回值是贰个整机的模版文件名,能够直接用来display和fetch方法开始展览渲染输出。

意味着调用当前模块上面包车型客车edit模板

T('Public/menu');// 返回 当前模块/View/Public/menu.html  T('blue/Public/menu');// 返回 当前模块/View/blue/Public/menu.html  T('Admin@Public/menu');// 返回 Admin/View/Public/menu.html      // 在display方法中直接使用T函数输出模板  $this->display(T('Admin@Public/menu'));
$this->display('Member:read'); 

本文由澳门威利斯人发布于网络资讯,转载请注明出处:模版引擎和模板常用参数设置,x中display方法及

关键词: 澳门威利斯人