修饰器

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

|mixed smartymodifier_name(|$value, |
| |
$param1_);|

mixed $value;[mixed $param1, …];

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

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


Example 18.3. 一个简单的修饰器

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

  1. <?php
  2. /*
  3. * Smarty plugin
  4. * -------------------------------------------------------------
  5. * File: modifier.capitalize.php
  6. * Type: modifier
  7. * Name: capitalize
  8. * Purpose: 让文字首字母大写
  9. * -------------------------------------------------------------
  10. */
  11. function smarty_modifier_capitalize($string)
  12. {
  13. return ucwords($string);
  14. }
  15. ?>
  16.  


Example 18.4. 更复杂的修饰器

  1. <?php
  2. /*
  3. * Smarty plugin
  4. * -------------------------------------------------------------
  5. * File: modifier.truncate.php
  6. * Type: modifier
  7. * Name: truncate
  8. * Purpose: 截取字符串长度,多余的部分会被$etc字符串代替。
  9. * -------------------------------------------------------------
  10. */
  11. function smarty_modifier_truncate($string, $length = 80, $etc = '...',
  12. $break_words = false)
  13. {
  14. if ($length == 0)
  15. return '';
  16.  
  17. if (strlen($string) > $length) {
  18. $length -= strlen($etc);
  19. $fragment = substr($string, 0, $length+1);
  20. if ($break_words)
  21. $fragment = substr($fragment, 0, -1);
  22. else
  23. $fragment = preg_replace('/\s+(\S+)?$/', '', $fragment);
  24. return $fragment.$etc;
  25. } else
  26. return $string;
  27. }
  28. ?>
  29.  

参见: registerPlugin(), unregisterPlugin().

原文: https://www.smarty.net/docs/zh_CN/plugins.modifiers.tpl