Přiřazení atributu (class) pro \Nette\Forms\Container

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

Ahoj,

snažím se přidat class pro container ve formuláři, resp. jeho fieldset element v HTML. Zkoušel jsem

$person = $form->addContainer("$name");
$person->getControlPrototype()->setAttribute('class', 'person');

a

$form[$name]->getControlPrototype()->class('person');

a různé obměny, ale dotyčnou metodu to zkrátka nemá. Dá se s tím něco dělat? Budu to potřebovat pro dynamické přidávání různého počtu kontaktních údajů na osoby v jednom formuláři, což si obstarám přes JQuery.

Díky:-)

David Matějka
Moderator | 6445
+
0
-

container je logicke rozdeleni prvku a vubec se nijak nevykresluje, takze ani nema zadny element prototypy apod. Pokud prvky chces rozdelit do ControlGroup, tak tomu muzes nastavit tridu pomoci

->addGroup(...)->setOption("container", \Nette\Utils\Html::el("fieldset")->class('person'))
Blaueminence
Člen | 31
+
0
-

Chci mít logické rozdělení prvků pomocí containerů (hlavní container „people“ a v něm očíslované containery jednotlivých lidí) a u každého mít nadpis, který jsem vytvářel přes addGroup(...). Tvůj kód mi sice vytvoří elementy, ale jak zároveň budu mít i jednotlivé containery, do kterých teprve mohu přidávat prvky formuláře?

David Matějka
Moderator | 6445
+
0
-

Containery a groupy musis vytvaret oboji samostatne.

Containery jsou viceurovnove pro logicke rozdeleni prvku (a odrazi se to i ve getValues() po odeslani)

Groupy jsou jednourovnove pro vizualni rozdeleni prvku a defaultne se vykresluji do fieldsetu.

Blaueminence
Člen | 31
+
0
-

Containery samy o sobě mi fungují správně. Problém je, že do containeru nelze přidat group a když to přidám do základní form, tak se z nějakého důvodu vypíše až ta poslední group a navíc až na konci celého formuláře.

Kód vypadá celý takhle:

$people = $form->addContainer("people");
for ($i = 1; $i <= self::MAX_PEOPLE; $i++) {
        $person = $people->addContainer("$i");
        $group = $form->addGroup("Nový člověk $i")->setOption("container", \Nette\Utils\Html::el("fieldset")->class('person'));
        $this->personalInputsForm($person); //tím vkládám inputy
}

Je vůbec možné to nějak vyřešit?