Smarty 徽标

您可以根据 商标声明 使用 Smarty 徽标。

Smarty Template Engine Smarty Template Engine

有关赞助、广告、新闻或其他询问,请通过以下方式联系我们

使用 Smarty 的网站

广告

.第 5 章。变量修饰符

变量修饰符可应用于 变量自定义函数 或字符串。要应用修饰符,请指定值,后跟 |(管道)和修饰符名称。修饰符可能接受影响其行为的其他参数。这些参数位于修饰符名称之后,并用 :(冒号)分隔。此外,所有 php 函数都可以隐式用作修饰符(见下方)并且修饰符可以 组合

示例 5.1。修饰符示例

{* 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="[email protected]"}

{* 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>

  

  • 修饰符可应用于任何类型的变量,包括数组和对象。

    注意

    Smarty 3 更改了默认行为。在 Smarty 2.x 中,您必须使用 "@" 符号才能向数组应用修饰符,例如 {$articleTitle|@count}。使用 Smarty 3 时,不再需要 "@",并且将忽略该符号。

    如果您想让修饰符应用于数组中的每个单独项,您将需要在模板中循环数组,或在修饰符函数中提供此功能。

    注意

    其次,在 Smarty 2.x 中,修改器应用于 math 表达式的结果,如 {8+2},意思是 {8+2|count_characters} 将给出 2,因为 8+2=10,10 的长度为两个字符。而在 Smarty 3 中,修改器应用于变量或原子表达式,然后再执行计算,因此,由于 2 的长度为一个字符,{8+2|count_characters} 给出 9。要获得旧结果,使用括号,如 {(8+2)|count_characters}

  • 修改器从 $plugins_dir $plugins_dir 自动加载,也可以通过 registerPlugin() 函数显式注册。后者适合在 PHP 脚本和 Smarty 模板之间共享一个函数。

  • 所有 PHP 函数都可以作为修改器隐式使用,如上面示例中的演示。然而,将 PHP 函数用作修改器有两个小缺点

    • 第一——有时函数参数的顺序不是理想的。用 {"%2.f"|sprintf:$foo}$foo 进行格式化实际上是可以工作的,但需要更加直观,如 {$foo|string_format:"%2.f"} 由 Smarty 分发提供。

    • 第二——如果启用了安全性,所有用作修改器的 PHP 函数都必须在安全性策略的 $modifiers 属性中声明为受信任的。有关详细信息,请参阅 Security 部分。

另请参阅 registerPlugin()组合修改器使用插件扩展 Smarty

首字母大写

这用于使变量中所有单词的首字母大写。这类似于 PHP ucwords() 函数。

参数位置 类型 是否必需 默认 描述
1 布尔值 FALSE 这决定是否将包含数字的单词大写
2 布尔值 FALSE 这决定是否将单词中的大写字母小写,例如,“aAa”变为“Aaa”

示例 5.2 大写

<?php

$smarty->assign('articleTitle', 'next x-men film, x3, delayed.');

?>

   

模板中的

{$articleTitle}
{$articleTitle|capitalize}
{$articleTitle|capitalize:true}

   

将输出

next x-men film, x3, delayed.
Next X-Men Film, x3, Delayed.
Next X-Men Film, X3, Delayed.

   

另请参阅 lowerupper