Při vytvoření presenteru a šablony mám prázdnou stránku

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
frantisek.kasa
Člen | 7
+
0
-

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á.

CZechBoY
Člen | 3608
+
0
-

Ukaž ještě šablony z FrontModule – @layout.latte, default.latte pro ten presenter

frantisek.kasa
Člen | 7
+
0
-

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?

CZechBoY
Člen | 3608
+
0
-

V jaký části životního cyklu si ten layout nastavoval?

frantisek.kasa
Člen | 7
+
0
-

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();
        }
    }
}
CZechBoY
Člen | 3608
+
0
-

A teda bila stranka byla na pages nebo homepage?
V pages nevidim nastaveni layoutu.

frantisek.kasa
Člen | 7
+
0
-

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
+
0
-

Pokud ti to najde layout automaticky tak nemusíš nic nastavovat – záleží na kodu v formatLayoutTemplateFiles

frantisek.kasa
Člen | 7
+
0
-

To si budu pamatovat. Děkuji za pomoc.