您的位置:首页 > 编程语言 > PHP开发

模版引擎详解-兄弟连新版thinkphp 15、16、17、18

2014-08-06 15:36 288 查看

第15节:ThinkPHP 3.1.2 模板变量详解

1、模版基本使用

IndexAction里添加index方法,内容为:

$this->assign('name','赵桐正'); // 将值“赵桐正”交给标识“name”

$this->display();   //显示模版,Tpl文件夹下默认index.html

Tpl下的模版index.html里显示模版变量name的值

{$name}

模版变量的值是由后台分配过来的。

2、模版变量输出:

  支持标量输出;字符串、数字、bool等

  支持常规数组输出;

(在index方法中,添加数组,$arr = array('a','b'); $this->assign('name',$arr);

在模版中,{$name[0]}; 则会输出'a)

  支持关联数组输出;

($arr = array('k1'=>'a','k2'=>'b');

{$name['k1']}; 则会输出a;

 另外,关联数组还可以使用{$name.k1}也能同样输出)

  支持对象输出;

  $obj= new test; $this->assign('name',$obj);

  {$name:k} 或者 {$name->k} //k是对象里的一个属性

3、系统变量

  在模版中直接获取系统变量的值,如POST GET SESSION SERVER等值

$Think.get.name; 模版可以直接读取地址栏里默认为get提交的数据 :index/name/ztz

$Think.session.id;输出session变量里的id

$Think.const.APP_NAME; 输出常量里的APP_NAME

4、使用函数

  例如在模版中对传递过来的值进行md5加密:{$name|md5} 它在编译时会自动变成 <?php echo (md5($name)); ?>

  例如时间戳处理显示。time=time(); {$name|date='Y-m-d H:i:s' , ### } 其中###是占位符,编译时被$name替换。

  在Runtime的Cache文件里有编译代码。

5、默认值

设置默认值 {$name|default='默认'} 若$name未赋值,则取默认值

6、运算符

+ - * / % ++ --

{$name++}

第16 17 18节:ThinkPHP 3.1.2 模板中的语法知识

一、导入CSS和JS文件

1、传统导入方式:

  CSS:<link rel='stylesheet' type='text/css' href='__PUBLIC__/Css/test.css'/>

  JS: <script src='__PUBLIC__/Js/test.js'></script>

  其中,__PUBLIC__会自动被模版引擎替换成路径:在项目所在同级目录下创建文件夹Public,内部创建Css和Js两个文件夹。然后在Css里建立test.css、test.js即可调用。

2、import标签导入外部CSS和JS:

  <import type='css' file='Css.test' />

  <import file='Js.test' /> import默认是js文件,可以省略 type属性

注意:若CSS JS文件夹不是放在Public文件夹内,而是同级的其他(My文件夹)文件夹内。在模版调用时要设置 basepath='./My/'

即:<import type='css' file='Css.test' basepath='./My' />

3、load标签 自动检测css或js,只需要地址

<load href='__PUBLIC__/Css/test.css' />

二、分支结构

  1、在模版中使用 if else

逻辑判断符: gt >;lt <;eq =;elt <=;egt >=;neq !=;heq ===;

g:greater;l:less;eq:equal

<if condition = '$name eq 男 '>
男人是泥巴做的
<else /> //单标签
女人是水做的
</if>


<if condition = '$age lt 18'>
未成年
<elseif condition='$age eq 18' />
青春年少
<else />
成年
</if>


  2、switch case

<switch name='number'>
<case value='1'>1个</case>
<case value='2'>2个</case>
  <default/>这里是默认值

</switch>


三、循环结构

  1、for

  <for start='0' end='10'> {$i} </for>循环执行十次。

  循环变量名 默认为 $i。

  完整用法: <for start="开始值" end="结束值" step="步进值" name="循环变量名" comparison="lt"> </for> (comparison为判断条件。lt为正序,gt为逆序)

  2、volist 数组遍历

//遍历一维数组
$arr=array("a1","b2","c3","d4");
$this->assign("list",$arr);


<volist name='list' id='v'>
{$v}<br/>
</volist>

a1
b2
c3
d4


//遍历二维数组
$arr[0]=array('id'=>1,'username'=>'ztz');
$arr[1]=array('id'=>2,'username'=>'ztz2');
$this->assign('list',$arr);


//每次取是一个数组,现在我只取username
<volist ame='list' id='v'>
{$v.username}<br/>
<volist>

ztz
ztz2


  3、foreach数组遍历 比volist简单

$arr=array('k1'=>'v1','k2'=>'v2','k3'=>'v3');
$this->assign('list',$arr);


<foreach name='list' item='v' key='k'>
{$k}-->{$v}<br/>
</foreach>

k1-->v1
k2-->v2
k3-->v3


使用foreach打印数据库内容(二维数组$arr):

$mytable=M('mytable');
$arr=$mytable>select();
$this->assign('list',$arr);


//使用表格形式打印出数据库内容
//v是取出的一个一维数组
<table>
<foreach name='list' item='v'>
<tr>
<td>{$v.id}</td>
<td>{$v.username}</td>
<td>{$v.password}</td>
         <if condition="$v.sex eq 1">
          <td>男</td>
         <else/>
          <td>女</td>

</tr>
</foreach>
</table>


四、特殊标签

  1、比较标签

eq  lt  gt  ngt等

<eq name='n' value='10'>等于10<else/>不是10</eq>


  2、范围标签

in 从某些值中挑选出一个

between 在某个范围内

<in name='n' value='1,2,3,4,5'>
{$n}在1,2,3,4,5这些数里面
<else/>不在1,2,3,4,5这些数里面
</in>


<between name='n' value='1,10'>
{$n}在1-10之间
<else/>不在1-10之间
</between>


  3、Present标签

  判断模版变量是否已经赋值。

<present name='n'>n有赋值<else/>n没有赋值</present>


  4、Empty标签判断模版变量是否为空。

  Define标签定义模版常量。

  Assign标签对模版变量进行赋值。

五、其他标签

建议在配置文件中修改左右定界符,修改配置文件。防止与css js变量冲突

'TMPL_L_DELIN'->'<{',

'TMPL_R_DELIN'->'>}',
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: