Jak vypsat komponentu do šablony uloženou v databasi
- zool
- Člen | 144
Ahoj chtěl jsem se zeptat dá se nějak elegantně vypsat html kod sablony komponenty do promenné? Potřeboval jsem udělat, když si do database uložím html kod s značkou komponenty a pak bych tuto značku potřeboval nahradit, buď v šabloně replace nebo jsem to udělal takto
public function renderDefault()
{
$this->template->stranky = $this->pages;
$this->template->dlouhy = $this->createTemplate()
->getLatte()
->setLoader(new \Latte\Loaders\StringLoader())
->renderToString($this->pages->dlouhy,$this->template->getParameters());
}
Ale to mi nepřijde jako elegantní řešení. Zkoušel jsem v šabloně toto
{var $for = $control["form"]->render()}
{$stranky->dlouhy|replace:"<<registrace>>",$for}
Ale to vždy vypíše formulář.
Editoval zool (11. 1. 2015 10:34)
- Filip Klimeš
- Nette Blogger | 156
Úplně nerozumím čeho chceš dosáhnout. Proč si chceš HTML kód
ukládat do databáze?
Pokud chceš vložit komponentu do jiné šablony, použij makro {control ..} a
v presenteru si udělej továrničku takhle.
EDIT: koukám, že v dokumentaci to není popsané.
Zkus to takhle:
V šabloně si udělej makro
{control myComponent}
a v presenteru si přidej metodu
public function createControlMyComponent()
{
return new MyComponent(); // pokud má komponenta nějaké závislosti, předej je tady
}
Editoval FilipKlimeš (11. 1. 2015 11:13)
- David Matějka
- Moderator | 6445
parametry se oddelujou dvojteckou, ne carkou.
(ale nevim, jestli to tim je…)
$form->render()
nevraci vysledek, ale vykresli form.
Zkus pouzit makro capture
Editoval matej21 (11. 1. 2015 12:41)