2010-12-01 15 views
0

スマートテンプレートでヘルパーの静的関数を使用する場合は、イムKO3とKohanaのモジュール - Smartyの使用 - https://github.com/MrAnchovy/kohana-module-smarty/をので、私の質問はどのように自動ロードヘルパーにあり、テンプレートでそれを使用する、すなわち:スマイリーにヘルパーを含めるには?

アプリ/クラス/ url.php


クラスのURL {
function test(){
リターン 'test';
}
index.tpl


} {$ url.test

+0

をあなたは "PHPのタグ –

答えて

0

あなたが変数、$url、およびアクセスとしてUrlを通過することができなければならない }


ビュー/それは{$url->test()}とあなたの視野の中でそれ。あなたがUrl::test()のような静的関数にアクセスできるかどうかはわかりません。

あなたが同じビューでヘルパーを使用している場合は、ビューで変数をバインドする新しいコントローラを作成することができます

<?php 
// application/classes/controller/site.php 
class Controller_Site extends Controller_Template 
{ 
    public $template = 'smarty:my_template'; 

    public function before() 
    { 
     $this->template->set_global('url_helper', new Url); 
    } 
} 
?> 

を次に、あなたの他のコントローラでそれを拡張:

<?php 
// application/classes/controller/welcome.php 
class Controller_Welcome extends Controller_Site 
{ 
    public function action_index() 
    { 
     $this->template->content = 'Yada, yada, yada...'; 
    } 
} 

そして、あなたの意見の中からアクセス:

{* application/views/my_template.tpl *} 
<p>This is a {$url_helper->test()}.</p> 
<p>{$content}</p> 
+1

jのみを追加している必要があります上記の答えが正しいことを確認し、テンプレートエンジンで静的メソッドへのアクセスが適切でない理由を説明したいと思っていました。これはサンドボックスを破ります。あなたがテンプレート内で '{Kohana :: config( 'database.default.connection.password')}'を本当に許可したいのであれば、それを行うためのプラグインを書くことができます:) –

関連する問題