StringTemplate a vykreslení komponenty (widget,component)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
2bfree
Člen | 248
+
0
-

Zdravím,
všude jsem potkal odkaz na StringTemplate, když chci generovat šablonu z řetězce.

Nikde jsem ale nepotkal řešení, které by to dělalo jako metoda. Takže jsem si připsal tuto prasáckou funkci

<?php
class StringTemplate extends Nette\Templates\Template{
    ...

    public static final function stringToTemplate($presenter,$text){
        if($text!=""){
            $template = new StringTemplate();
            $template->presenter = $presenter;
            $template->registerFilter(new Nette\Templates\LatteFilter);
            $template->content = $text;

            return $template->__toString();
        }
    }
}
?>

V presenteru potom volám třeba (reálně $sablona dotahuji z databáze)

<?php
class MyPresenter extends Nette\Application\Presenter  {
     public function actionShow(){
         $sablona  = '<div class="pokus">\n';
         $sablona .= '    {widget gallery}\n';
         $sablona .= '</div>\n';
         $this->template->articleTitle = StringTemplate::StringToTemplate($this,$sablona);
     }

     protected function createComponentGallery() {
         $gallery = new Gallery;
         ...
         return $gallery;
     }
}
?>

Narazil jsem ale na problém, že když v řetězci volám widget, tak mi to vrací chybu:
Undefined variable: control

Dokázali byste mi prosím poradit, kterak rozchodit widgety v šabloně StringTemplate?

Aurielle
Člen | 1281
+
0
-

$control = $presenter v tomto případě. Jinak sám využívám tuhle úpravu.