AppForm::addGroup() – nastaveni ID ci Class?

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

Neslo by pridat k AppForm::addGroup() moznost nastaveni class a ID?

Neco na zpusob:

  • AppForm::addText(‚name‘, ‚Label‘)->getLabelPrototype()
  • AppForm::addText(‚name‘, ‚Label‘)->getControlPrototype()

V urcitych situacich by se mi to docela hodilo. Napriklad bych si chtel nekterou skupinu jinak obarvit nebo na ni pridat nejakou jQuery vlastnost. Kdyz ale nemuzu nijak rozlisit fieldsety (a labely) generovane formularem, tak to moc nejde a zbyva mi jedine manualni render, coz je zase zdlouhave psani..

Honza Kuchař
Člen | 1662
+
0
-

Pravda, opravdu tam nic takového není. https://api.nette.org/…rmGroup.html

tak to moc nejde a zbyva mi jedine manualni render, coz je zase zdlouhave psani..

Použij https://componette.org/search/?… a máš to hned. :-)

redhead
Člen | 1313
+
0
-

a nejde

$group->setOption('container', Html::el('fieldset', 'class=ABC id=IDcko'));

??

Sice trošku zdlouhavé, ale mělo by to jít. Ale byl bych pro přidání těch get*Prototype() metod.

Honza Kuchař
Člen | 1662
+
0
-

To jo, ale jak píšeš, je to dost zdlouhavé. Je to pokyn rendereru. Já osobně bych tedy použil manual render. Máš nad tím pak plnou kontrolu a nemusíš používat žádné takovéto kličky. ;-)

Endrju
Člen | 147
+
0
-

Manual render je v nekterych pripadech nutny, to jiste ano. Ale ne vzdy si to situace vyzaduje.. Navic, kdyz jsou formulare u Nette tak silnou strankou, bylo by skvele mit moznost jakemukoli prvku ktery pridavam prostrednictvim AppForm nastavit ‚id‘ ci ‚class‘. A kdyz uz tak bych privital i neco jako
AppForm::addHtmlEl(string nazev_emelentu, array argumenty)->setText(string obsah)

A kdyz uz by byl vykreslovan standartni Formularovy layout tak by se takto pridany prvek vykreslil bud do tabulky kde <td colspan=„pocet_sloupcu“>[nas HTML element]</td> nebo by se tabulka ukoncila a pokracovala by za prvkem (aby ten element tu tabulku neroztahnul).

Ted me jeste napadlo, kdyz ve tovarnicce vytvarim formular $form = new AppForm($this, $name) a nepridavam zadne AppFrom::addGroup(), tak by tabulka generovana formularem dostala terba ID=„$name“ – cimz mame moznost si zase takove tabulce priradit konkretni nastylovani.

A pokud bych pridaval nejakou skupinu, tak by mela id podle id te skupiny.

Mozna to co pisu neni uplne domyslene a chtelo by to domyslet, ale treba by to nebylo od veci. I kdyz tohle uz mozna zavani spise manualnim renderem.. Komu se to ale chce vzdycky psat :)

Honza Kuchař
Člen | 1662
+
0
-

Problém je v tom, že tyto věci nepatří do presenteru. Proto se upřednostňuje použití manuálního rendereru. Ale není problém si napsat form control, který tam ten string vykreslí. Bude to jistě otázka pár řádků. Nebude nic přijímat ani odesílat. Jen se bude umět vykreslit.

Mikulas Dite
Člen | 756
+
0
-

Endrju napsal(a):

… A pokud bych pridaval nejakou skupinu, tak by mela id podle id te skupiny.

Přesně to dělá FormContainer, oproti tomu groupa se stará jenom o vykreslení html a nijak do struktury dat formuláře nezasahuje.

Honza Kuchař
Člen | 1662
+
0
-

On myslel jen přidat nějaký div někam doprostřed formuláře.

eldest
Člen | 58
+
+3
-

Dělá se to takto

$form->addGroup('xxx')->setOption('container', 'fieldset class=trida');