私が見つけた唯一の解決策は、カスタム関数を作成することです。次のコードを 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 の学生です。コードの改善に関する提案は大歓迎です。
それが他の人を助けることを願っています。