undefined $basePath v templatu z db

- hury
 - Člen | 56
 
cus,
nemuzu se pohnout od nasledujiciho:
pouzivam nette 2.0 beta, php 5.3
Homepage:default
$template = new \Nette\Templating\FileTemplate(__DIR__.'/../templates/Homepage/obsah.latte');
$template->registerHelperLoader('\Nette\Templating\DefaultHelpers::loader');
$template->registerFilter(new \Nette\Latte\Engine);
$template->text = $data; // objekt z DB; $data->text obsahuje napriklad promennou {$basePath}
$template->render();
jednoduse receno, v DB mam obsah sablony, ktery doplnuji do obsah.latte
aktualne to chcipne na: Undefined variable: basePath
predem diky za nejake reseni/radu

- Filip Procházka
 - Moderator | 4668
 
To není chyba Nette, ale tvoje. Šablona toho potřebuje docela dost.
Nejjednodušší řešení je, nechat si ji vytvořit od nějakého
Presenteru, nebo Controlu.
$template = $this->createTemplate()
	->setFile(__DIR__ . '/../templates/Homepage/obsah.latte');
$template->text = $data;
$template->render();
				
- Filip Procházka
 - Moderator | 4668
 
To je otřesné řešení… Co ti to psalo za chybu, když jsi použil můj kód?

- Filip Procházka
 - Moderator | 4668
 
V tom případě takto…
$this->createTemplate('Nette\Templating\Template')->setSource($data)->render();
				
- hury
 - Člen | 56
 
xxxObiWan: cely template nemam v DB, ale jen textovy obsah… zbytek je normalne v obsah.latte,
HosipLan: v prvni rade se neprovedl startUp BasePresenteru, kde si vytvarim $menu, tak jsem $menu dosadil rucne.
Pak se nepovedlo
$this->createTemplate()->setFile(__DIR__ . '/../templates/Homepage/obsah.latte');,
protoze mi to pise:
Page not found. Missing template ‚…/web/app/FrontModule/templates/Homepage/testObsahu.latte‘
dal jsem to nezkousel, nevim bohuzel jak

- Filip Procházka
 - Moderator | 4668
 
Vždyť je to zcela jasné.
Když si text chyby přeložíš, zjistíš, že ti oznamuje, že neexistuje
soubor …/web/app/FrontModule/templates/Homepage/testObsahu.latte
který tomu nutíš.

- Filip Procházka
 - Moderator | 4668
 
Řešení jsem ti už napsal
$this->createTemplate('Nette\Templating\Template')->setSource($data)->render();
případně výsledek můžeš ukládat do proměnné
// vyrenderovaná šablona z databáze
$this->template->text = $this->createTemplate('Nette\Templating\Template')->setSource($data);
a v šabloně presenteru vypisovat jako
{block #content}
<div id="obsah">
	{!$text->render()}
</div>
					Editoval HosipLan (29. 7. 2011 13:16)