2012-01-19 15 views
1

私は、このようなページにアンカーを書きたいと思いKohanaの3のためにKSmartyと一緒にKohanaの3.2.0を学んでいる:私は、URLを構築することができますPHP。 Smartyテンプレートにアンカーを作成します。 (Kohanaの3 + KSmarty)

<a href="http://www.mysite.cz/page/list">Page list</a> 

コントローラーをSmartyに変数として渡します。 Smartyテンプレート(「http://www.mysite.cz」を含む)のアンカーまたはURLを構築する方法はありますか?

アンカーを構築できない場合。 フルURLを作成することは少なくとも可能ですか?

理由:私は別のテンプレートを含むメインテンプレートを持っています。 メインテンプレートは複数のコントローラで使用されるため、各コントローラにURLを作成しないようにしたいと考えています。 KSmartyが私のためにそれをやることができるなら、私は幸せになるでしょう。

+0

私は前にKSmartyを使用していないとして、残念ながら私はちょうどKSmartyは、私が代わりに推薦する2009年に最後に戻って更新しているように見えるように私は別のSmartyのモジュールをお勧めしたいと思った、あなたの質問に答えることはできませんします。https:/を/github.com/MrAnchovy/Kohana_Smarty3 –

+0

Davogothicありがとう、私はこのモジュールについて知りませんでした。私は確かにそれを試してみます。 – Vojtech

答えて

2

私が見つけた唯一の解決策は、カスタム関数を書くことです。使用の

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テンプレートで:Smartyのプラグインディレクトリ内function.url.phpファイルに次のコードを保存した変数が設定されている

{url} 
{url type='url' url='admin/categories' protocol='https'} 
{url type='anchor' url='admin/articles' text='List of articles'} 

最初のブロックIは、そうでない場合はSmartyを書かなければなりませんでした「Undefined variable ...」という通知を生成していました。私は単なるPHPの学生です。コードの改善の提案は大歓迎です。

他人に役立つことを願っています。

関連する問題