需要对模板输出使用函数进行过滤或其它处理的时候 可以使用:
{$data.name|md5}
可以使用空格 例如下面的写法是一样的:
{$data.name | md5}
编译后的结果是:
<?php echo htmlentities(md5($data['name'])); ?>
其中htmlentities
方法是系统默认添加的(无需手动指定。
为了避免出现XSS安全问题 默认的变量输出都会使用
htmlentities
方法进行转义输出。
你还可以设置默认的过滤方法 在配置文件template.php
中设置
'default_filter' => 'htmlspecialchars'
就会默认使用htmlspecialchars
方法过滤输出。
如果你不需要转义(例如你需要输出html表格等内容) 可以使用:
{$data.name|raw}
编译后的结果是:
<?php echo $data['name']; ?>
系统内置了下面几个固定的过滤规则(不区分大小写)
过滤方法 | 描述 |
---|---|
date | 日期格式化(支持各种时间类型) |
format | 字符串格式化 |
upper | 转换为大写 |
lower | 转换为小写 |
first | 输出数组的第个元素 |
last | 输出数组的最后个元素 |
default | 默认值 |
raw | 不使用(默认)转义 |
例如
{$data.create_time|date='Y-m-d H:i',###}
{$data.number|format='%02d'}
如果函数有多个参数需要调用 可以使用
{$data.name|substr=0,3}
表示输出
<?php echo htmlentities(substr($data['name'],0,3)); ?>
还可以支持多个函数过滤 多个函数之间用“|”分割即可 例如:
{$name|md5|upper|substr=0,3}
编译后的结果是:
<?php echo htmlentities(substr(strtoupper(md5($name)),0,3)); ?>
函数会按照从左到右的顺序依次调用(系统默认的过滤规则会在最后调用)。
变量输出使用的函数可以支持内置的PHP函数或用户自定义函数 甚至是静态方法。
如果你觉得这样写起来比较麻烦 也可以直接这样写:
{:substr(strtoupper(md5($name)),0,3)}
使用该方法输出的值不会使用默认的过滤方法进行转义。
可以在模板中直接使用系统的助手函数进行输出
{:app('cache')->get('name')}
表示调用容器中的thinkCache
对象实例输出name
缓存标识内容。
{:
开头的变量输出表示调用函数或类的方法及属性 如果你要带命名空间调用类的属性 例如:
{:think\App::VERSION}
{:think\facade\Request::get('name')}
类的命名空间中的
需要改成
\
才能正常调用。
尊贵的董事大人
英文标题不为空时 视为本栏投稿
需要关键字 描述 英文标题