Adresy jako v Link i v makru Include

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Filip Procházka
Moderator | 4668
+
0
-

Zdravím,
napadlo mě, že by se nám líným dala ještě víc zpříjemnit práce, kdyby se dalo místo

{include '../../../templates/@nejaka.sdilena.sablona.phtml'}

napsat něco jako

{include ':Front#/nejaka.sdilena.sablona.phtml'}
{include 'akce#nejaka.sdilena.sablona.phtml'}
{include 'presenter:akce#nejaka.sdilena.sablona.phtml'}
{include ':modul:presenter:akce#nejaka.sdilena.sablona.phtml'}

Zkrátka, stejně jako se zapisují odkazy.
Imho by se zvýšila přenositelnost a čitelnost kódu, jenom se mi nelíbí vniklá závislost na odkazech.

Jenom teď přemýšlím, jaký by byl dobrý znak, pro oddělení cesty ve stromu modulů a cesty k templatě, ale # je imho nejvhodnější.
Když si večer vzpomenu tak to zkusím implementovat

Líbilo by se to někomu? nebo je to překombinované?

Michalek
Člen | 210
+
0
-

Líbilo…

_Martin_
Generous Backer | 679
+
0
-

Nelíbilo=)

Ale ne, vážně: přijde mi to překombinované = právě ta nutná závislost na presenteru a místy skřípající syntaxe, viz:

{include ':modul:presenter:akce#nejaka.sdilena.sablona.phtml'} <!-- u odkazu má "akce" smysl, ale u šablony? když akce je sama o sobě šablonou -->

Já vím, jsem takový konzervativec=) Kdyby se přeci jen mělo něco takového realizovat, pak konstruktivně doporučuji zachovat možnost obou způsobů (tj. vkládat soubory cestou i zápisem odkazu).

mkoubik
Člen | 728
+
0
-

Neexistuje jednoznačná spojitost mezi trojicí presenter-action-seznam_parametrů a konkrétním view (šablonou). Navíc $presenter->link() se použít nedá, protože generuje přímo url. Celkově je to dost ujetý.

Filip Procházka
Moderator | 4668
+
0
-

_Martin_: samozřejmě jsem měl na mysli zachovat obě možnosti :)

žádnou závislost na presenteru přece nenaznačuju, viz první příspěvek

{include ':Front#/nejaka.sdilena.sablona.phtml'}

:Front je zde jasný modul čili cesta by vedla na app/FrontModule/templates/,
kdežto za :Front:Prihlaseni: by mohlo vest na app/FrontModule/templates/Prihlaseni/,
je to jenom o tom vymyslet konvenci, je tu pár variant, které odkazování v Nette nepoužívá, ale to se dá všecko vymyslet :)

mkoubik: ale samozřejmě že existuje, máš přece stromovou strukturu modulů a ta má dost jasnou konvenci, stačí aplikovat konvenci tvoření url a místo url by se to jen převádělo na cestu k templatám modulu. A nastuduj si třídu \Nette\Application\PresenterLoader, nějaký ->link() vůbec nepotřebuji ;-)

_Martin_
Generous Backer | 679
+
0
-

Tu závislost jsem myslel spíš tak, že bude třeba nějaká externí třída pro použití tohoto makra (nevím, zda přímo Presenter či PresenterLoader).

srigi
Nette Blogger | 558
+
0
-

+1 lebo prave teraz by sa mi to hodilo.