Pomoc s různorodým routováním
- svanda777
- Člen | 14
Dobrý den,
jsem v Nette úplný začátečník a potřeboval bych poradit
s routováním.
Potřebuji toto:
/home PagePresenter:default (parametr home)
/home/upravit PagePresenter:edit (parametr home)
/funkce PagePresenter:default (parametr funkce)
/novinky PostPresenter:default (parametr novinky)
/novinky/pridat PostPresenter:add (parametr novinky)
/novinky/odstranit/1 PostPresenter:deleter (parametry novinky,1)
/ukoly PostPresenter:default (ukoly)
/prihlaseni SignPresenter:default
/registrace SignPresenter:register
/odhlaseni SignPresenter:logout
Toto byl pouze zlomek ze všech možných URL adres.
Napadli mne dvě možnosti:
- Vytvořit si pro každou akci zvláštní presenter kromě PagePresenteru, který pouze vypisuje text.
/novinky NovinkyPresenter
/ukoly UkolyPresenter
/prihlaseni PrihlaseniPresenter
/home PagePresenter
/funkce PagePresenter
- Ukládat si presentery a akce do databáze.
Nejde mi o kód, spíš by mne zajímal Váš názor na způsob, jakým to
udělat.
U první možnosti je, dle mého názoru problém, že projekt bude obsahovat
spoustu tříd, kde se bude hodně kódu opakovat. Ale na druhou stranu bude
projekt asi přehlednější (nemusím kód rozdělovat na větve podle
parametru).
U druhé možnosti zase nevím, jak by měl vypadat návrh databáze a asi by
bylo programování routy trochu složitější.
Předem moc děkuji za radu.
- Pavel Kravčík
- Člen | 1196
A nefungoval by univerzální parametr + nějaké persistentní?
A každý presenter by si ho překládal jinak? Něco jako $param a každý presenter si ho zpracuje zvlášť. Udržíš si tím jednu routu a to specifické nastavení bude vždy v konkrétním místě – kam podle mě patří.
Druhé parametry můžeš řešit takto:
/** @persistent */
public $druhyParametr;
public function startup($param)
{
$this->home = $param;
}
A routa pak bude stejná jako ta defaultní -> jen vyhodíš [id] a dáš tam [param].
- Pavel Kravčík
- Člen | 1196
Tak můžeš ty presentery dědit. :) Ty se stejnou funkčností budou mít stejného abstraktního předka a nikde nebudeš mít ten kód vícekrát. Případně můžeš asi použít traity (tam si nejsem jistý).
- svanda777
- Člen | 14
Ještě mi došlo, že potřebuji autorizaci – u každé „stránky“ potřebuji určit, kdo k ní má přístup. Už jsem se tedy rozhodl, že většina stránek bude mít vlastní presenter, kromě stránek, které zobrazují pouze text – ty budou používát PagePresenter. A samozřejmě bych rád používal hezké URL.
Mohl by mi někdo poradit, jakým způsobem udělat routování a databázovou strukturu?