Templates: 4 Features – alternativní syntax latte filteru ve stylu HTML, alternativní zápis proměnných…

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

Líbilo by se mi kdyby bylo možné šablony zapisovat takhle:

1. Alternativní syntax Latte filtru ve stylu HTML

První fičura by šla docílit přepnutím oddělovačů na < a >. Bohužel už není možné rozeznat takové značky od normálního HTML. Předpokládám, že by to šlo rozlišit jednoduše podle názvu. V HTML nejsou značky <block> nebo <include>.

<block content>
	<include parent>
	<h1>Hello</h1>
	<include ../foo.phtml>
	...

2. Alternativní zápis proměnných

Druhá fičura by šla docílit detekcí znaku $ s tím že konec názvu je mezera nebo jiný první na-alfa-numericko-podtržítkový znak třeba <. Samozřejmě není třeba podporovat plnou PHP syntax. Stačila by základní jako funguje v řetězci s "".

<div foreach="$users as $user">
	$user->name
</div>

3. Snazší zápis chytrých attributů

Tohle už jsem nadhazoval v jiném vlákně – no nějak to tam zapadlo tak to vytahuju na světlo. Tehdy se mi jednalo o zápis:

<a n:href="Default:view">...</a>

Dneska a také po přečtení původního vlákna) se na věc dívám ještě trošku jinak:

<a href="Default:view">...</a>
<img src="Affiliate:banner" />

tedy automaticky zpracovávané atributy které mohou obsahovat Nette odkazy a ty měnit na opravdové odkazy.
Při tomto použití vzniká problém s {plink} a {link}. Opět se to řeší na jiném místě v původní diskusi

Já to nevidím jako tolik palčivý problém. Myslím si, že by to mělo pracovat vždy v kontextu komponenty. Tedy tak, jako teď funguje {link}

Pokud chci z komponenty linkovat presenter obvykle to dělám jednou uvnitř té komponenty a tedy mi nevadí použít něco složitějšího jako třeba {plink}:

<a presenter:href="Default:view">...</a>
<img presenter:src="Affiliate:banner" />
nebo
<a phref="Default:view">...</a>
<img psrc="Affiliate:banner" />
nebo
<a href="presenter:Default:view">...</a>
<img src="presenter:Affiliate:banner" />

případně jiná varianta…

4. Nejednoznačnost <include>

Tohle není feature request ale jen asi námět k diskusi.
Pokud vím v nových šablonách je používání znaku # nepovinné. Zápis bez mřížky skvěle funguje v makru {block}.
V makru {include} už to ovšem tak skvělé není. Schválně zkuste {include parent}. Zařve to na neexistenci souboru parent. Tedy relativní blbost.

Napadají mě 4 řešení:

  1. Zachovat křížky – nic moc
  2. Použít pro vložení bloku jiné makro než pro vložení souboru (místo {include} třeba {paste}) – dejme tomu
  3. Nejprve kontrolovat existenci bloku toho jména – vcelku dobré a rozumné řešení
  4. Vzhledem k tomu, že šablony se zapisují celým jménem (tedy i s příponou), mohlo by se automaticky předpokládat, že jde o blok, pokud hodnota nemá příponu (vyloučilo by to soubory bez přípony ale to podle mě není žádná nevýhoda)
<include #parent> - zachování křížku
<paste parent> - jiná značka
<include parent> - nejprve se kontroluje existence bloku parent
<include parent> - předpokládá se existence bloku parent

No nějak to narostlo pokud se objeví nějaká bouřlivá diskuse můžeme to nějak rozdělit.

Díky za pozornost.
Vítám diskusi :)

HOWGH

Ola
Člen | 385
+
0
-

Napadá mě trošku delší, ale výstižný název pro include pro bloky – {placeholder-for content}, nebo insert, nebo prostě {place content}

pekelnik
Člen | 462
+
0
-

Ola napsal(a):

Napadá mě trošku delší, ale výstižný název pro include pro bloky – {placeholder-for content}, nebo insert, nebo prostě {place content}

{place} je docela dobrý :)

Ještě mě napadlo {include block foo} ale je to dlouhý :(

Ondřej Mirtes
Člen | 1536
+
0
-
  1. Už tu máš něco podobného v podobě n: atributů.
  2. To by způsobilo nepřehlednost + peklo pro toho, co má dnes v šablonách znak dolaru jako znaku, co se má vytisknout. Copak tě bolí ruce z napsání {}? Nastav si líp klávesnici :o)
  3. Tady souhlas. Nette se snaží jít ve všem cestou jediné varianty, přitom někde je právě na výběr více možností – viz properties, různé zápisy v šablonách a teď nepovinnost znaku # v blocích, které ovšem nelze využít všude, např. při vkládání rodičovského bloku. Buďto bych zakázal vkládání souborů bez přípony .phtml, čímž by se zrušila nejednoznačnost, nebo bych zpátky zavedl povinný znak #, čímž by se dosáhlo stejného efektu.
Patrik Votoček
Člen | 2221
+
0
-
  1. https://api.nette.org/…eMacros.html#…
  2. to je strašně nepřehledné
  3. souhlas
  4. dokud se nezrušila povinnost # v blocích bylo celkem ok