Latte: značka pro volitelné vložení bloku / souboru
- David Grudl
- Nette Core | 8284
Chtěl bych do Latte přidat variaci značky {include}
pro
volitelné vložení souboru (nebo bloku). Tj. pokud soubor/blog nebude
existovat, nevyhodí se výjimka. Syntax by měla být:
{include? file.latte}
Napadlo mě, že by bylo fajn přidat i obdobnou variantu značky
{embed}
. Ale tady váhám nad dvěma způsoby provedení:
{embed? file.latte}
{block xx}...{/block}
{/embed}
nebo
{embed? file.latte}
{block xx}...{/block}
{/embed?}
Rozdíl je jen v koncové značce. Tedy buď bude ?
jen
parametrem značky {embed}
, nebo půjde o novou značku
{embed?}
a pak se otazník napíše i v koncové značce.
Prompt pro vás: uveď u obou řešení pro a proti a zvol lepší variantu :-)
- Kamil Valenta
- Člen | 844
Proč je nutné zavádět nové značky, když v principu dělají „to samé“? Include je pořád include. To, co je volitelné, je název souboru. Ten nemusí existovat. V PHP otazník uvozuje volitelný parametr a je spojen s ním. Zachoval bych to i v latte:
{include file.latte} {* error *}
{include ?file.latte} {* silent *}
Problém s párovými značkami by pak odpadl také.
- hrach
- Člen | 1844
Proč je nutné zavádět nové značky, když v principu dělají „to samé“?
- Visibility je dost zasadnim zpusobem vic, nez par nejakych usetrenych znaku
- Krome toho, ze se takova funkce (tryInclude) mnohem vice samodokumentuje, tak hlavne to neni nejaky single non-name znak, ktery jeste v kontenxtu „cest“ ma uplne jiny vyznam. glob
- Integrace pro novou znacku pro autocomplete v pluginech je vyrazne jednodussi – jak napovidat navrhovanou funkcionalitu s otaznikem opravdu netusim.
Nechapu, jak to muze tolika lidem prijit dobry napad.
Editoval hrach (24. 6. 11:22)
- David Grudl
- Nette Core | 8284
MajklNajt napsal(a):
A čo tak
tryInclude
atryEmbed
?
I to je samozřejmě cesta.
Samozřejmě nejlepší je, když syntaxe přesně trefí funkcionalitu.
A tou je include bloku nebo souboru, který nemusí existovat. Prefix
try
může být zavádějící v tom, že naznačuje, že
pokrývá všechny možné chyby, nejen neexistenci. Otazník mi připadal
lepší v tom, že se v JS a PHP používá ve smyslu nepřítomnosti hodnoty
(nullsafe), tady by to bylo přeneseně na nepřítomnost bloku nebo
souboru.
Další možností je nějaký flag, jako
{include if exists ...}
což je skvěle srozumitelné, byť asi
nezvyklé.
- David Grudl
- Nette Core | 8284
Ale když nad tím přemýšlím, celé je to špatný nápad.
Bylo by lepší to řešit přidáním podmínky. Pro bloky existuje
{if hasBlock(...)} nebo `{ifset block}
, takže bude lepší přidat
obdobu pro šablony, například hasTemplate()
, což dává mnohem
širší možnosti využití, především ohledně detekce, zda se tedy něco
includovalo nebo ne. A celý problém tím padá.