Templates: 4 Features – alternativní syntax latte filteru ve stylu HTML, alternativní zápis proměnných…
- pekelnik
- Člen | 462
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í:
- Zachovat křížky – nic moc
- Použít pro vložení bloku jiné makro než pro vložení souboru (místo {include} třeba {paste}) – dejme tomu
- Nejprve kontrolovat existenci bloku toho jména – vcelku dobré a rozumné řešení
- 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
- Ondřej Mirtes
- Člen | 1536
- Už tu máš něco podobného v podobě n: atributů.
- 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) - 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
- https://api.nette.org/…eMacros.html#…
- to je strašně nepřehledné
- souhlas
- dokud se nezrušila povinnost # v blocích bylo celkem ok