Ako povedat Nette, ze niektore sablony nereprezentuju akcie

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

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

Já bych vytvořil pro „zakázané“ šablony action metody a tam vyhodil BadRequestException = 404.

castamir
Člen | 629
+
0
-

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.

sabrx
Člen | 47
+
0
-

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.

Majkl578
Moderator | 1364
+
0
-

Zavináč je obecně zažitý spíš pro layouty a vhodnější z hlediska přehldnosti by asi bylo použít nějaký jiný speciální znak, třeba vlnku: ~noTasks.latte.

sabrx
Člen | 47
+
0
-

Je nejaká množina povolených znakov, ktoré môžu byť na začiatku, alebo je to ľubovoľný špeciálny znak?

Majkl578 napsal(a):

Zavináč je obecně zažitý spíš pro layouty a vhodnější z hlediska přehldnosti by asi bylo použít nějaký jiný speciální znak, třeba vlnku: ~noTasks.latte.

Majkl578
Moderator | 1364
+
0
-

Cokoliv, co může obsahovat název fyzického souboru na disku.

duke
Člen | 650
+
0
-

A co se ti nelíbí na řešení pomocí podadresáře?
Např.: templates/Task/includes/noTasks.latte a v šabloně pak:

{include includes/noTasks.latte}
Felix
Nette Core | 1245
+
0
-

Ja taky pouzivam prefix @.

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Mám dojem, že ze školení Davida Grudla si pamatuju doporučení používat @ i pro ostatní „nedostupné“ šablony, nejen layout.