Makro form a attribut class

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Elijen
Člen | 171
+
0
-

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?

kravčo
Člen | 721
+
0
-

makro {form} by malo byť na default rendereri pokiaľ možno nezávislé…

Elijen
Člen | 171
+
0
-

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
+
0
-

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
+
0
-

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
+
0
-

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)