Rozdělení presenterů do více složek
- MikeLacroix
- Člen | 60
Zdravím,
jsem v Nette úplně nový a nejspíš tu již odpověď na mou otázku bude, ale to, co jsem našel, mi moc nepomohlo.
Chtěl bych si aplikaci rozdělit na soukromou a veřejnou část. Vytvořil jsem si tedy následující adresářovou strukturu:
- presenters/Back/
- presenters/Front/
- presenters/Front/BasePresenter.php
- presenters/Front/HomepagePresenter.php
- templates/Back/
- templates/Front/Homepage/
- templates/Front/Homepage/default.latte
Nedaří se mi však nastavit routování tak, aby správně posílalo požadavky na potřebné presentery a k tomu odpovídající templates. Zkouším nejdřív úplně jednoduše přesměrovat stránku www.mojestranka.l na presenter Front:Homepage:default. Viz bootstrap.php:
<?php
...
$container->router[] = new Route('index.php', 'Front:Homepage:default', Route::ONE_WAY);
...
?>
To mi však hlásí:
„Page not found. Missing template ‚…\app\presenters\templates\Homepage\default.latte‘.“
Poradí někdo?
- James_Scott
- Člen | 55
Podle všeho se routa provede správně(dole v panelu by jsi měl mít routu označenou zeleně), ale chybová hláška Ti jasně ukazuje, že nemůže najít šablonu default pro presenter Homepage.
Spíš bych ale upravil strukturu na:
- Front/presenters/HomepagePresenter
- Back/presenters/HomepagePresenter
Podle toho pak i šablony:
- Front/templates/Homepage/default.latte
- Back/templates/Homepage/default.latte
Presentery a modely by jsi měl (nevím jestli to je povinnost) také zařadit do odpovídajícího namespace.
Editoval James_Scott (2. 11. 2013 0:13)
- HappyFace
- Člen | 162
James_Scott napsal(a):
Presentery a modely by jsi měl (nevím jestli to je povinnost) také zařadit do odpovídajícího namespace.
Nie ze by mal ale musi ich zabalit do NAMESPACE! minimalne jeden z nych lebo ak bude mat nieco ako:
Back/presenter/IndexPresenter a Front/presenter/IndexPresenter a to urcite bude mat tak NETTE ti bude hlasit, ze mas duplikatne classy.
- MikeLacroix
- Člen | 60
Super díky moc! Ještě jeden dotaz: Jak dám aplikaci vedět, kde má daný presenter/template hledat? Jestli ve složce Front nebo Back?
- HappyFace
- Člen | 162
MikeLacroix napsal(a):
Super díky moc! Ještě jeden dotaz: Jak dám aplikaci vedět, kde má daný presenter/template hledat? Jestli ve složce Front nebo Back?
to si hlada automaticky podla umiestnenia presenteru
+back:
->+presenter
->-> HomepagePresenter.php
->+template
->-> +Homepage -> index.latte
->-> @layout.latte
+front:
->+presenter
->-> FrontpagePresenter.php
->+template
->-> @layout.latte
->-> +Frontpage -> index.latte
Editoval HappyFace (2. 11. 2013 12:28)
- MikeLacroix
- Člen | 60
Nemůžu si pomoct, pořád mi to neběží. Můj současný stav:
Back/presenters/HomepagePresenter.php
namespace Back;
class HomepagePresenter extends Nette\Application\UI\Presenter {
public function renderDefault() {
$this->template->foo = 'back';
}
}
Back/templates/Homepage/default.latte
{$foo}
Front/presenters/HomepagePresenter.php
namespace Front;
class HomepagePresenter extends Nette\Application\UI\Presenter {
public function renderDefault() {
$this->template->foo = 'front';
}
}
Front/templates/Homepage/default.latte
{$foo}
Routy:
$container->router[] = new Route('/admin/<presenter>/<action>[/<id>]', 'Back:Homepage:default');
$container->router[] = new Route('<presenter>/<action>[/<id>]', 'Front:Homepage:default');
Chyba:
Cannot load presenter ‚Homepage‘, class ‚HomepagePresenter‘ was not
found in ‚..... app/presenters/HomepagePresenter.php‘.