我發現的唯一解決方案是編寫自定義函數。下面的代碼保存到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的學生,對代碼改進的建議值得歡迎。
希望它能幫助別人。
不幸的是,我不能回答你的問題,因爲我以前沒有使用KSmarty,我只是覺得我會推薦一個不同的Smarty模塊,因爲KSmarty似乎最後在2009年更新過。我將推薦:https:/ /github.com/MrAnchovy/Kohana_Smarty3 –
謝謝Davgothic,我不知道這個模塊。我一定會嘗試。 – Vojtech