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
Presenter
u, nebo Control
u.
$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)