Výpis komponent pomocí filtru – registrace v presenteru
- krcuk41
- Člen | 12
Ahoj,
řeším takový složitější problém. Mám ho vyřešený a je funkční ale moc se mi to nelíbí.
Mám komponenty a chci je vypisovat v tělě textu a to tak, že v textu vytvořím kód, který následně reprezentuje nastavení pro vykreslení komponenty.
Mám vytvořený filtr, který funguje ale problém nastává, při registraci komponent. Potřebuju je vyrenderovat jako string a v tu chvíli se objevuje chyba, že komponenta není připojená k presenteru.
Mám to vyřešené takto – registruju filtr:
$presenter = $this->getPresenter();
$this->template->addFilter('shortcode', function (string $string) use ($presenter, $shortcode) {
$control = $shortcode->create();
$control->setPresenter($presenter);
return $control($string);
});
V samotném filtru už pak můžu volat na presenteru addComponent, vyrenderovat jí do stringu a vložit místo kódu.
Nevím jestli to není prasárna.
Navíc bych si chtěl filtr spíš registrovat v konfiguraci. Jde to nějak?
services:
nette.latteFactory:
setup:
- addFilter('shortcode', @App\IShortcode::create())
Díky za radu.