Smarty3——变量修饰器
变量修饰器可以用于变量, 自定义函数或者字符串。 使用修饰器,需要在变量的后面加上|(竖线)并且跟着修饰器名称。 修饰器可能还会有附加的参数以便达到效果。 参数会跟着修饰器名称,用:(冒号)分开。 同时,默认全部PHP函数都可以作为修饰器来使用 (不止下面的),而且修饰器可以被 联合使用。
这是Smarty3的默认行为。在Smarty2.x,你需要在数组后加上"
@" 标识来使用修饰器,如{$articleTitle|@count}。 在Smarty3,不再需要使用"@",它会被忽略另外,在Smarty2.x,修饰器可以作用在数学表达式的结果上,如
{8+2}, 意味着{8+2|count_characters}的结果是2, 因为8+2=10 而 10 是两个字符长度。 在Smarty3,修饰器将会作用在变量上,或者是在表达式计算前,所以因为 2 是一个字符长度, 所以{8+2|count_characters}的结果是9. 如果希望出现原来的结果,可以使用括号,如{(8+2)|count_characters}。修饰器可以从
$plugins_dir目录中自动加载,或者通过registerPlugin()来进行动态注册。 第二种方法在PHP代码和smarty模板间共享函数时很有用。默认全部PHP函数都可以作为修饰器,正如上面例子演示的。 然而,使用php函数作为修饰器会存在两个小问题:
首先 - 有时函数参数的顺序并不太一致。如使用
{"%2.f"|sprintf:$foo}来格式化$foo是正确的。 但是更直观的做法,{$foo|string_format:"%2.f"}是Smarty自身的函数。其次 - 如果开启了安全限制,那么要使用php函数作为修饰器,就必须通过
{* apply modifier to a variable *}
{$title|upper}
{* modifier with parameters *}
{$title|truncate:40:"..."}
{* apply modifier to a function parameter *}
{html_table loop=$myvar|upper}
{* with parameters *}
{html_table loop=$myvar|truncate:40:"..."}
{* apply modifier to literal string *}
{"foobar"|upper}
{* using date_format to format the current date *}
{$smarty.now|date_format:"%Y/%m/%d"}
{* apply modifier to a custom function *}
{mailto|upper address="smarty@example.com"}
{* using php's str_repeat *}
{"="|str_repeat:80}
{* php's count *}
{$myArray|@count}
{* this will uppercase and truncate the whole array *}
<select name="name_id">
{html_options output=$my_array|upper|truncate:20}
</select>
Smarty3——变量修饰器的更多相关文章
- Smarty3——复合变量修饰器输
你可以联合使用多个修饰器. 它们会按复合的顺序来作用于变量,从左到右. 它们必须以| (竖线)进行分隔,以‘:’号设置参数 {$articleTitle} {$articleTitle|upper|s ...
- Smarty 变量修饰器
为了更方便的实现 功能与显示分离,通常会用 smarty 将功能代码中的数据 assign 到页面中,在页面中合理使用 smarty 的修饰方法,会使页面显示更美观! 一个数据可同时使用多个修饰函数, ...
- Python修饰器的函数式编程
Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都 ...
- Python修饰器
Python的修饰器的英文名叫Decorator,当你看到这个英文名的时候,你可能会把其跟Design Pattern里的Decorator搞混了,其实这是完全不同的两个东西.虽然好像,他们要干的事都 ...
- Python_@修饰器(装饰器)的理解
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的作用就是为已经存在的对象添加额外的功能. def funA(fun): print (fun( ...
- GLSL ES 中的存储变量修饰符(const/attribute/uniform/varying/in/centroid in/out/centroid out)
GLSL ES 3.00 中支持的存储变量修饰符 变量名称 作用 示例 const 编译过程常量,或者函数的只读参数 const vec3 zAxis = vec3 (0.0, 0.0, 1.0); ...
- python函数修饰器(decorator)
python语言本身具有丰富的功能和表达语法,其中修饰器是一个非常有用的功能.在设计模式中,decorator能够在无需直接使用子类的方式来动态地修正一个函数,类或者类的方法的功能.当你希望在不修改函 ...
- Python学习札记(二十六) 函数式编程7 修饰器
修饰器 NOTE 1.函数对象有一个__name__属性,可以拿到函数的名字: #!/usr/bin/env python3 def now(): print('2017/2/19') def mai ...
- python__高级 : @修饰器(装饰器)的理解
以下是第一次了解的时候写的东西,有的地方理解不正确,虽已改正但是太片面,请直接看下面第二次修改加上的内容. ---------------------------------------------- ...
随机推荐
- 序列化 SqlAlchemy 的结果为 json 字符串
http://my.oschina.net/gongshang/blog/395431?p=1 在设计 RESTful 的网站时,我们总是希望 ORM 框架返回的结果是可以直接给 View 层使用的 ...
- Linux 之 NTP 服务 服务器
我们选择第三台机器( mysql02 )为 NTF 服务器,其他机器和这台机器进行同步. 1. 检查 ntp 服务是否已经安装[root@mysql02 ~]# sudo rpm -qa | grep ...
- mysql的账号管理
mysql的账号管理 最先匹配 user 表(包含:用户列 权限列 安全列 资源控制列)连接判断:host user password字段(user的授权是全局的): 然后匹配db表:如果只是给指定 ...
- python一个简单的web服务器和客户端
服务器: 当客户联系时创建一个连接套接字 从这个连接接收HTTP请求(*) 解释该请求所请求的特定文件 从服务器的文件系统获取该文件 并发送文件内容 ...
- redis1
1. redis持久化有两种方式 ① RDB:就是周期性(比如5s)将内存中的数据放到硬盘 ② AOF:就是增删改操作写入日志,根据日志恢复等 2. redis三种分布式 ①主从 ②哨兵 ③集群 3. ...
- svn配置及基本使用
svn软件下载地址http://subversion.apache.org/packages.html在安装TortoiseSVN时安装客户端和服务端 下以svn在windows下使用为例,linux ...
- python学习(十七) 扩展python
c, c++, java比python快几个数量级. 17.1 考虑哪个更重要 开发速度还是运行速度更重要. 17.2 非常简单的途径:Jython和IronPython Jython可以直接访问JA ...
- Oracle 分区表-Range分区
原文:http://www.tuicool.com/articles/MzeM7r 一.什么是分区表 Oracle提供了分区技术以支持VLDB(Very Large DataBase).分区表通过对分 ...
- Py修行路 python基础 (三)字典
names=["zhang"]names2=["jack","jie"]names.clear()print(names) #清空整个列表 ...
- pandas+mysql+excel 数据处理
mysql 建表 join 建索引,不然查询慢 注意时间类型是否update后会被刷新 设计逻辑删除 enable , 不要delete null,字符串 数字运算用函数 ifnull( ...