[BUG] Zvlášťní chování Nette\Web\Html při podmíněném atributu

- jakubkulhan
 - Člen | 55
 
echo Html::el('img')->alt('')->__toString(); // vypíše: <img alt="" />
echo Html::el('img')->alt('', TRUE)->__toString(); // vypíše: <img />
Objeveno na d45ce91, pravděpodobně i u předchozích commitů.

- jakubkulhan
 - Člen | 55
 
kravčo napsal(a):
Aké je očakávané správanie a na základe čoho?
Očekával bych, že se u obou případů vypíše alt="" –
některé atributy opravdu mohu chtít nastavit jako prázdné řetězce
(alt u <img> nechť je toho příkladem). Pro
vymazání atributu bych to viděl na spíše něco jako
->alt(NULL). Každopádně souhlasím
s jasirem, že by chování mělo být konzistentní, ať se
zvolí jedna, či druhá varianta za tu správnou.

- jakubkulhan
 - Člen | 55
 
kravčo napsal(a):
Ak sa nemýlim, druhý parameter v nastavovaní atribútu značí použitie atribútu ako poľa, napr:
Html::el('span')->style('font-weight', 'bold');Pri takomto nastavovaní
altide podľa mňa o misuse, nie o chybu Nette.
Narazil jsem na to, když jsem psal patch
na chytré atributy. Chtěl jsem u povinných atributů prostě přidat do
vytvořeného kódu ->alt("", TRUE). Přišlo mi neintuitivní,
že pokud je podmínka vždy splněna (TRUE), tak proč to nic
nepřidává. Při pohledu
do kódu to chápu.

- jasir
 - Člen | 746
 
kravčo napsal(a):
Ak sa nemýlim, druhý parameter v nastavovaní atribútu značí použitie atribútu ako poľa, napr:
Html::el('span')->style('font-weight', 'bold');Pri takomto nastavovaní
altide podľa mňa o misuse, nie o chybu Nette.
Mám pocit, že druhý parametr může také TRUE značit
přidej attribut vs. přepiš attribut – ale lepší je používat metody
‚addAttr()‘ a ‚setAttr()‘ pro jejich jednoznačnost.
Ale stejná nekonzistence se projeví i pomocí
add<Attr>() a set<Attr>():
<?php
	$el = Html::el('img')->setAlt('');  //<img alt="" />
	$el = Html::el('img')->addAlt('');  //<img />
?>
					Editoval jasir (31. 8. 2009 15:06)