Při vytvoření presenteru a šablony mám prázdnou stránku
- frantisek.kasa
- Člen | 7
Ahoj,
strukturu adresáře mám následující:
- App/AdminModule
- – presenters
- – templates
- App/FrontModule
- – presenters
- – templates
- Model
- Presenters
- Router
Vytvořím ve FrontModule presenter a šablonu, kde ve složce /Model mám PagesManager, ze které získávám data z databáze a následně je aplikuji v presenteru.
Problém je v tom, že když si dumpnu data v presenteru (metoda public function renderDefault() ), tak tam údaje jsou, ale v šabloně /templates/neco/default.latte se nic nezobrazí pouze bílá stránka a žádnou chybu mi nevyhodí tracy.
Kde může být chyba? Může být v routě?
Routa je zde:
$router = new RouteList();
/* BackendModule */
$router[] = $backend = new RouteList('Admin');
$backend[] = new Route('admin/<presenter>/<action>[/<id>]', 'Administrator:default');
/* FrontendModule */
$router[] = $frontend = new RouteList('Front');
$frontend[] = new Route('<presenter>/<action>[/<id>]', 'Homepage:default');
return $router;
Jinak dodám, že když tento stejný postup provádím v AdminModule, tak vše funguje jak má.
- frantisek.kasa
- Člen | 7
Tak jsem doma :) . Hlavní šablona se mi jmenovala @layoutFront.latte a v presenteru HomepagePresenter jsem měl v metodě beforeRender() $this->setLayout(‚layoutFront‘); , tak jsem to zkusil přejmenovat a už to jde.
Jen by mě zajímalo, jak to, že to nebralo layoutFront.latte?
- frantisek.kasa
- Člen | 7
Teď nevím jestli dobře rozumím otázce:
v FrontModule/presenters/HomepagePresenter mám:
class HomepagePresenter extends BasePresenter
{
public function beforeRender() {
parent::beforeRender();
$this->setLayout('layout');
}
}
ten životní cyklus je nejspíš beforeRender() ?
A v FrontModule/presenters/PagesPresenter mám:
class PagesPresenter extends BasePresenter
{
protected $pageManager = '';
public function __construct(PagesManager $pagesManager)
{
parent::__construct();
$this->pageManager = $pagesManager;
}
public function renderDefault()
{
$pages = $this->pageManager->getPages();
if (isset($pages))
{
$this->template->pages = $pages;
}
else
{
throw new BadRequestException();
}
}
}
- frantisek.kasa
- Člen | 7
Bílá stránka byla na Pages, ale když vytvořím šablonu pages.latte, tak to co bude v bloku content to se vypíše v @layout.latte {include content} , tudíž pro pages nemusím nastavovat šablonu ne?
- CZechBoY
- Člen | 3608
Pokud ti to najde layout automaticky tak nemusíš nic nastavovat – záleží na kodu v formatLayoutTemplateFiles