Makro form a attribut class
- Elijen
- Člen | 171
Zdravim,
s kolegou v praci jsme narazili na zajimavy WTF faktor Nette
(version 2.0-dev released on 2011-06-03
).
Pri rucnim vykreslovani formulare pomoci makra form
se prvkum
formulare automaticky nevyplnuje attribut class
podle jejich typu,
jak to dela DefaultFormRenderer. Tedy:
{form myForm}
<p>{input myTextInput}</p> <!-- input nema pridany attribut class="text" -->
{/form}
Avsak pokud nekdy pred rucnim vykreslenim formulare zavolame napr.
vyrenderovani chyb formulare, renderer (asi metoda
DefaultFormRenderer::init()
) prvkum nastavi attributy class a ty se
tedy vykresluji i pri rucnim renderovani. Viz:
{form myForm}
{control myForm errors}
<p>{input myTextInput}</p> <!-- input ma pridany attribut class="text" -->
{/form}
Chapu, ze kombinovat dve ruzne metody vykresleni formulare neni uplne ciste,
ale (pokud vim) lepe renderovat chyby zatim nelze. Mozna by mohlo jiz samotne
makro form volat DefaultFormRenderer::init()
. Co vy na to?
- Elijen
- Člen | 171
Souhlasim, nevim proc jsem si myslel ze makro form to interne vykresluje pomoci default rendereru. Ale:
- DefaultFormRenderer by mohl ponechavat form po vyrenderovani nepozmeneny (az na nastaveni isRendered na true)
- makro form by mohlo nastavovat attributy stejne jako to dela default renderer
Bylo by to tak mene magicke :)
- David Grudl
- Nette Core | 8228
Je třeba dostat vykreslování chyb mimo DefaultFormRenderer. Tedy mít makro na vykreslení chyb pro prvek i pro formulář. Trošku váhám nad jeho názvem.
„Oclasovávání“ bych asi makra neučil, ono to mělo historický význam v době, kdy tu vládl IE 6, dnes už to užitečné není.
- Tomáš Votruba
- Moderator | 1114
Cílem je zřejmě přesunout oclasování z presenteru do šablony, je to logické a jednodušší (i když nové). Tedy tak si ono „trápení“ zdůvodňuji já.
- o5
- Člen | 416
Při použití form makra, jsem narazil, že při formuláři typu GET se nepřidá automaticky hidden input pro přenos „do“ parametru, tak jako se generuje při použití $form->render(‚begin‘). Přidá se do action atributu formu a to mi jaksi nefungovalo, respektive „do“ parametr se po odeslání formu nedostal do url a tedy onSuccess handler se nezavolal.
Edit: tohle by to melo opravit https://github.com/…c4fa6fce84e8
Editoval o5 (8. 3. 2012 17:44)