Přiřazení atributu (class) pro \Nette\Forms\Container
- Blaueminence
- Člen | 31
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
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
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
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
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?