我找到的唯一解决方案是编写自定义函数。将以下代码保存到 Smarty 插件目录下的 function.url.php 文件中:
function smarty_function_url($params, &$smarty)
{
$type = '';
if(isset($params['type'])) $type = $params['type'];
$protocol = 'http';
if(isset($params['protocol'])) $protocol = $params['protocol'];
$url = '';
if(isset($params['url'])) $url = $params['url'];
$text = '';
if(isset($params['text'])) $text = $params['text'];
switch($params['type'])
{
case 'url':
return Kohana_URL::site($url, $protocol);
case 'anchor':
$url = Kohana_URL::site($url, $protocol);
return "<a href='{$url}'>{$text}</a>";
default:
return Kohana_URL::base('http');
}
}
Smarty模板中的使用示例:
{url}
{url type='url' url='admin/categories' protocol='https'}
{url type='anchor' url='admin/articles' text='List of articles'}
我必须在其中设置变量的第一个块,否则 Smarty 会生成通知“未定义的变量...”。我只是PHP学生,欢迎提出代码改进建议。
希望它会帮助其他人。