Nastavení atributu (třídy) rodiči elementu

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

Ahoj, řeším takový problém s vykreslováním formuláře a na foru jsem chvíli hledal a nějak nic nenašel. Jak nastavím rodiči elementu nějakou třídu. rodiče myslím v této souvislosti wrapper, v mém případě <td>
Jediné co jsem našel na foru bylo $form->addText(‚ic‘, ‚IČ:‘)->setOption(‚id‘,‚ic_podniku‘) ale to mi nefunguje.

Díky za radu

editace
tak jsem zjistil že to ->setOption(…) nefunguje jen u addSubmit, u addText to jde

Editoval Neklan (23. 11. 2011 7:40)

Melmen
Člen | 132
+
0
-

Viz dokumentace:

$renderer = $form->getRenderer();
$renderer->wrappers['controls']['container'] = 'dl';
$renderer->wrappers['pair']['container'] = NULL;
$renderer->wrappers['label']['container'] = 'dt';
$renderer->wrappers['control']['container'] = 'dd';

EDIT:: Teď mi došlo, že asi hledáš manuální vykreslování :)

Editoval Melmen (23. 11. 2011 14:56)

Neklan
Člen | 21
+
0
-

jj, ja vim jak nastavit určité typy wrapperu, ale už nevim jak tomu jednomu konkretnimu wrapperu co obaluje submit nastavi nějaké atributy, potažmo class. samozřejmě si to můžu ručně vypsat, ale to je to co nechci, chci to nějak nastavit defaultně

duke
Člen | 650
+
0
-

Díval jsem se do kódu a zdá se, že u buttonů to nefunguje proto, protože defaultní renderer počítá s tím, že jich bude víc vedle sebe a obaluje je všechny stejným obalovacím tagem. Nebylo by tedy jasné, které id se má použít, a proto se nastavení setOption(‚id‘, $value) v případě buttonů ignoruje.

Pokud chceš jiné chování, můžeš si napsat vlastní renderer, např. jako rozšíření výchozího, tj. třídy Nette\Forms\Rendering\DefaultFormRenderer.

Pokud ale jen potřebuješ obalit nějaké buttony tagem s id, můžeš použít groups, např. takto:

<?php
$form->addGroup()->setOption('container', Html::el('div')->id('my_buttons'));
$form->addSubmit('save', 'Save')->setAttribute('class', 'default');
$form->addSubmit('cancel', 'Cancel')->setValidationScope(NULL);
?>