[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í
alt
ide 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í
alt
ide 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)