2010-12-01 7 views
0

ID möchte statische Funktionen von Helfern in einer Smarty-Vorlage verwenden. Im mit KO3 und kohana-Modul-Smarty - https://github.com/MrAnchovy/kohana-module-smarty/ so meine Frage ist, wie man automatisch geladen Helfer und verwenden Sie es in einer Vorlage, das heißt:Wie man Helfer in Smarty einbindet?

app/Klasse/url.php


Klasse url {
Funktionstest() {
Rücksendung 'Test';
}
}


views/index.tpl


{$ url.test}

+0

Sie haben den 'php' Tag haben sollten –

Antwort

0

sollten Sie in der Lage sein Url als Variable übergeben, $url und Zugang es in Ihrer Sicht mit {$url->test()}. Ich bin mir nicht sicher, ob Sie auf statische Funktionen wie Url::test() zugreifen könnten.

Wenn Sie einen Helfer in den gleichen Ansichten verwenden, können Sie einen neuen Controller erstellen, der die Variable in der Ansicht bindet:

<?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); 
    } 
} 
?> 

Dann erweitern Sie es in Ihrem anderen Controllern:

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

und greifen Sie in Ihren Ansichten:

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

Nur j Wir sind darauf gestoßen, wollten nur bestätigen, dass die obige Antwort richtig ist und erklären, warum der Zugriff auf statische Methoden in einer Template-Engine nicht geeignet ist - sie bricht das Sandboxing. Wenn Sie wirklich '{Kohana :: config ('database.default.connection.password')}} in Ihrer Vorlage erlauben wollten, könnten Sie ein Plugin dafür schreiben :) –