什么是 Smarty?
为什么要使用它?
用例和工作流
语法比较
模板继承
最佳实践
速成课程
void smarty_function_name( |
$params, | |
$template) ; |
array $params
;object $template
;从模板传给模板函数的所有 属性 在 $params
中作为关联数组中。
函数的输出(返回值)将在模板中替换函数标记的位置,例如,{fetch}
函数。或者,函数也可以简单地执行其他任务而没有任何输出,例如 {assign}
函数。
如果函数需要给模板分配一些变量或使用其他 Smarty 提供的功能,它可以使用提供的 $template
对象来这样做,例如 $template->foo()
。
示例 18.1. 带输出的函数插件
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: function.eightball.php * Type: function * Name: eightball * Purpose: outputs a random magic answer * ------------------------------------------------------------- */ function smarty_function_eightball($params, Smarty_Internal_Template $template) { $answers = array('Yes', 'No', 'No way', 'Outlook not so good', 'Ask again soon', 'Maybe in your reality'); $result = array_rand($answers); return $answers[$result]; } ?>
可以在模板中用作
Question: Will we ever have time travel? Answer: {eightball}.
示例 18.2. 没有输出的函数插件
<?php /* * Smarty plugin * ------------------------------------------------------------- * File: function.assign.php * Type: function * Name: assign * Purpose: assign a value to a template variable * ------------------------------------------------------------- */ function smarty_function_assign($params, Smarty_Internal_Template $template) { if (empty($params['var'])) { trigger_error("assign: missing 'var' parameter"); return; } if (!in_array('value', array_keys($params))) { trigger_error("assign: missing 'value' parameter"); return; } $template->assign($params['var'], $params['value']); } ?>