Ako povedat Nette, ze niektore sablony nereprezentuju akcie
- sabrx
- Člen | 47
Ahojte, práve som narazil na taký zaujímavý problém. Povedzme, že mám presenter TaskPresenter, v ňom akciu defaultAction a k nej samozrejme šablónu default.latte v priečinku templates\Task. V tomto priečinku mám tiež nejaké podporné šablóny noTasks.latte a tasks.latte, ktoré inkludujem v default.latte, keď je treba.
Problém je, že ak v rámci tohto presentera uvediem ako akciu tasks, Nette vyparsuje z URL akciu tasks a vyhľadá šablónu tasks.latte a pôjde o legitímny request, ale tomu chcem zabrániť, keďže tasks nie je akcia.
Napadli mi dve riešenia:
- vytvorím si samostatný priečinok na takéto podporné šablóny, ktorý je mimo presenterov
- ak ich nechem presúvať, musím v presenteri napísať príslušné akcie, a napr. presmerovávať niekam, ale to celkom zneprehľadňuje kód, keďže tieto akcie sú „mŕtve“
Zaujíma ma, či existuje nejaké lepšie riešenie, napr. či sa dá nejako povedať Nette, že nejde o šablóny k akciám. Vďaka za pomoc.
- Tomáš Kolinger
- Člen | 136
Já bych vytvořil pro „zakázané“ šablony action metody a tam vyhodil BadRequestException = 404.
- sabrx
- Člen | 47
Perfektne, vdaka! Najprv mi to nefungovalo, ale bolo len treba dopisat @ v metode setView.
castamir napsal(a):
přejmenuj je na
@tasks.latte
,@noTasks.latte
. Prostě se @ na začátku. Všechny ostatní soubory mohou být přímo dosažitelné z „venku“ bez ohledu na to, zda máš nebo nemáš patřičné action/render metody.
- Vojtěch Dobeš
- Gold Partner | 1316
Mám dojem, že ze školení Davida Grudla si pamatuju doporučení
používat @
i pro ostatní „nedostupné“ šablony, nejen
layout.