修饰器

修饰器是一些小函数, 它们会对模板中的变量,在显示之前或使用前进行处理。 修饰器可以连用。

mixed smarty_modifier_name( $value,  
  $param1);  
mixed $value;
[mixed $param1, ...];
 

第一个参数是修饰器所修饰的变量值。 余下的参数是可选的,它们是附加传递给修饰器的参数。

修饰器必须return处理的结果。

Example 18.3. 一个简单的修饰器

这个修饰器简单地用别名替代了PHP内置的函数,不带其他的附加参数。


<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.capitalize.php
 * Type:     modifier
 * Name:     capitalize
 * Purpose:  让文字首字母大写
 * -------------------------------------------------------------
 */
function smarty_modifier_capitalize($string)
{
    return ucwords($string);
}
?>


Example 18.4. 更复杂的修饰器


<?php
/*
 * Smarty plugin
 * -------------------------------------------------------------
 * File:     modifier.truncate.php
 * Type:     modifier
 * Name:     truncate
 * Purpose:  截取字符串长度,多余的部分会被$etc字符串代替。
 * -------------------------------------------------------------
 */
function smarty_modifier_truncate($string, $length = 80, $etc = '...',
                                  $break_words = false)
{
    if ($length == 0)
        return '';

    if (strlen($string) > $length) {
        $length -= strlen($etc);
        $fragment = substr($string, 0, $length+1);
        if ($break_words)
            $fragment = substr($fragment, 0, -1);
        else
            $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment);
        return $fragment.$etc;
    } else
        return $string;
}
?>

     

参见: registerPlugin(), unregisterPlugin().