Thinkphp模板变量的高级使用

kevin.Zhu 发布于:2013-1-16 16:12 分类:Thinkphp  有 16 人浏览,获得评论 0 条  

内置模板引擎对模板变量的支持相当充分,除了可以输出正常变量外,还可以输出特殊变量和对输出变量使用函数定义(并支持多个函数)。
模板变量的标签格式为
格式:{$varname|function1|function2=arg1,arg2,### } 
说明: 
{ 和 $ 符号之间不能有空格 ,后面参数的空格就没有问题
###表示模板变量本身的参数位置 
支持多个函数函数之间支持空格 
支持函数屏蔽功能,在配置文件中可以配置禁止使用的函数列表 
支持变量缓存功能,重复变量字串不多次解析

使用例子:

代码: 复制内容到剪贴板

  1. {$webTitle|md5strtoupper |  substr=0,3  }

  2. {$number|number_format=2  }

如果在应用Action中需要输出某个变量,使用下面的方法:

代码: 复制内容到剪贴板

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

系统只会输出设定的变量,其它变量不会输出,一定程度上保证了变量的安全性。

系统支持输出数组和对象属性,无论要输出的模板变量是数组还是对象,都可以用下列方式输出:

代码: 复制内容到剪贴板

  1. {$user.name}

系统会自动判断要输出的变量,如果是多维数组或者多层对象属性的输出,请使用下面的定义方式:

代码: 复制内容到剪贴板

  1. {$user['sub']['name']}

  2. {$user:sub:name}

如果要同时输出多个模板变量,可以使用下面的方式:

代码: 复制内容到剪贴板

  1. $array = array();

  2. $array['name']    =    'thinkphp';

  3. $array['email']    =    'liu21st@gmail.com';

  4. $array['phone']    =    '12335678';

  5. $this->assign($array);

这样,就可以在模板文件中同时输出name、email和phone三个变量。

除了常规变量的输出外,模板引擎还支持系统变量和系统常量、以及系统特殊变量的输出。它们的输出不需要对模板变量赋值。

系统变量(依然支持函数使用和大小写、空格),以Think.打头,如

代码: 复制内容到剪贴板

  1. {$Think.server.script_name //取得$_SERVER变量

  2. {$Think.session.session_id|md5 // 获取$_SESSION变量

  3. {$Think.get.pageNumber //获取$_GET变量

  4. {$Think.cookie.name }  //获取$_COOKIE变量

系统常量

代码: 复制内容到剪贴板

  1. {$Think.const.__FILE__ 

  2. {$Think.const.MODULE_NAME }

特殊变量 ,由ThinkPHP系统定义的常量

代码: 复制内容到剪贴板

  1. {$Think.version }  //版本 

  2. {$Think.now //现在时间 

  3. {$Think.template|basename //模板页面 

  4. {$Think.LDELIM //模板标签起始符号 

  5. {$Think.RDELIM //模板标签结束符号

配置参数

代码: 复制内容到剪贴板

  1. {$Think.config.db_charset}

语言变量

代码: 复制内容到剪贴板

  1. {$Think.lang.page_error}

还有一些常用的变量输出快捷标签,包括下面:

代码: 复制内容到剪贴板

  1. {:function()} //执行方法并输出返回值

  2. {~function} //执行方法不输出

  3. {@var} //输出Session变量

  4. {&var} //输出配置参数

  5. {%var} //输出语言变量

  6. {.var} //输出GET变量

  7. {^var} //输出POST变量

  8. {*var} //输出常量