Smarty{call}
内置函数能够调用由 {function} 标签定义的模板函数。现在,我需要在插件函数内部调用模板函数,因为我只知道插件内部的函数名称。
插件功能:
<?php
$smarty->registerPlugin('function', 'form_label', 'renderFormLabel');
function renderFormLabel($form, \Smarty_Internal_Template $template) {
// find out which function to call based on the available ones
$function = lookupTemplateFunction($template);
$args = $form->getVariables();
// How to call the Smarty template function with the given $args?
// $html = $template->smarty->???($args);
//return $html;
}
模板:
<form action="submit.php" method="post">
{form_label}
....
</form>
这是在SmartyBundle中支持Symfony2 Forms的努力。每个表单片段都由一个 Smarty 函数表示。要自定义表单呈现方式的任何部分,用户只需要覆盖适当的函数。