5.6. 修饰

5.6.1. 使用修饰(modifer)
5.6.2. 内置的修饰

修饰是mint模板对变量的再次处理。

5.6.1. 使用修饰(modifer)

使用管道符(|)表示修饰,使用一对圆括号(( ))将参数值给修饰传递参数。比如使用default修饰

{$nullString|default('i-am-default')}

其中的$nullString是变量名,粗体的default是修饰名,斜体的i-am-default是它的第一个参数。参数中如果有字符串,必须加上引号。如果没有任何参数,可以不使用圆括号。

可以使用多重修饰,变量值流向是从左到右

{$string|cat("H","I","J")|lower}

示例中的$stirng先经过cat修饰(有三个参数"H","I","J")处理,再经过lower修饰处理。

例 5.1. 示例action

    public function appIndex() {
        
IMint::setOptions(array("template-dir"=>".""compile-dir"=>dirname(__FILE__) . "/compile-dir""mode"=>"debug"));
        
$template = new IMintTemplate("test");
        
$this->x->y->= array("a""b""c""d""e");
        
$this->array = array(12345);
        
$this->nullString "";
        
$this->string "abcdefg";
        
$this->date "now";
        
$this->html "<span>aaa'&nbsp;\"quote\"'</span>";
        
$this->lines "p1\np2\np3\np4";
        return new 
IModelAndTemplate($this"test");
    }

例 5.2. 示例模板


date:{$a["date"]+10*3.14+2}<br/>
nullString:{$nullString}<br/>
default:{$nullString|default('i-am-default')}<br/>
upper:{$string|upper|lower(1)}<br/>
lower:{$string|lower}<br/>
captialize:{$string|capitalize}<br/>
cat:{$string|cat("H","I","J")|lower}<br/>
date_format:{$date|date_format('%Y,%m,%d')}<br/>
print:{$x.y.z|print|simple_text_format}<br/>
escape:{$html|escape}<br/>
indent:{$string|indent(4,"&nbsp;")}<br/>
nl2br:{$lines|nl2br}<br/>
regex_replace:{$string|regex_replace('/de/','DE')}<br/>
replace:{$string|replace('de','DE')}<br/>
spacify:{$string|spacify}<br/>
string_format:{$string|string_format('%s')}<br/>
left:{$string|left(4,1,' ..')}<br/>
right:{$string|right(4,1," ..")}<br/>
string:{$string|cat('h',-7*24*3600*)}<br/>
array:{$array|array_sum}<br/>
function:{$string|strlen}<br/>

例 5.3. 分析结果

date:33.4
nullString:
default:i-am-default
upper:abcdefg
lower:abcdefg
captialize:Abcdefg
cat:abcdefghij
date_format:2007,11,02
print:Array
(
    [0] => a
    [1] => b
    [2] => c
    [3] => d
    [4] => e
)

escape:<span>aaa'&nbsp;"quote"'</span>
indent:    abcdefg
nl2br:p1
p2
p3
p4
regex_replace:abcDEfg
replace:abcDEfg
spacify:a b c d e f g
string_format:abcdefg
left:abcd ..
right: ..defg
string:abcdefgh-604800
array:15
function:7

所有的系统函数和用户自定义函数默认都可以作为mint的修饰,由于这个特性,程序员可以非常轻松的添加自己的修饰。在模板中除了array_sum、strlen和nl2br三个系统定义的修饰外,其余都是mint内置的修饰。



5.6.2. 内置的修饰

5.6.2.1. lower

将变量中的字符全部转换为小写。

表 5.1. lower
参数名 参数说明

5.6.2.2. upper

将变量中的字符全部转换为大写。

表 5.2. upper
参数名 参数说明

5.6.2.3. default

设置默认值,当变量为空字符串(非null)时,显示该默认值。

表 5.3. default
参数名 参数说明
default 默认值,可选,默认为空字符串

5.6.2.4. capitalize

将变量值的首字母大写。

表 5.4. capitalize
参数名 参数说明

5.6.2.5. cat

在变量的基础上通过参数加入更多的字符串。

表 5.5. cat
参数名 参数说明
arg0 第一个参数
arg1 第二个参数
...
argN 第n个参数

5.6.2.6. date_format

格式化日期显示。

表 5.6. date_format
参数名 参数说明
format 可选,格式,如 %b %e, %Y
defaultDate 可选,默认日期

5.6.2.7. print

输出变量内容。

表 5.7. print
参数名 参数说明

5.6.2.8. escape

转义字符串。

表 5.8. escape
参数名 参数说明
encType 编码类型,默认为html,可以选的有html,htmlall,url,urlpathinfo,quotes,hex,hexentity,decentity,javascript,mail,nonstd
charset 字符集,默认为ISO-8859-1

5.6.2.9. indent

在字符串左边插入一些空白或其他字符。

表 5.9. indent
参数名 参数说明
number 字符的个数,默认为4
char 字符,默认为一个空格(" ")

5.6.2.10. regex_replace

使用正则表达式执行字符串替换。

表 5.10. regex_replace
参数名 参数说明
search 搜索的正则表达式,默认为/.+/s
replace 替代的字符串,默认为一个空格

5.6.2.11. replace

执行字符串替换。

表 5.11. replace
参数名 参数说明
search 搜索的字符串
replace 替代的字符串

5.6.2.12. spacify

在字符之间插入空格或其他字符。

表 5.12. spacify
参数名 参数说明
char 插入的字符,默认为空格

5.6.2.13. string_format

使用sprintf格式化字符串。

表 5.13. string_format
参数名 参数说明
format 格式,默认为 %s

5.6.2.14. left

从字符串左边起截取字符。

表 5.14. left
参数名 参数说明
length 截取的长度
multi 是否处理宽字节字符,默认为false
etc 字符串多余的部分表示,默认没有

5.6.2.15. right

从字符串右边起截取n个字符。

表 5.15. right
参数名 参数说明
length 截取的长度
multi 是否处理宽字节字符,默认为false
etc 字符串多余的部分表示,默认没有

5.6.2.16. simple_text_format

简单格式化文本。

表 5.16. simple_text_format
参数名 参数说明
charset 字符集,可选