Nastavení atributu (třídy) rodiči elementu
- Neklan
- Člen | 21
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
$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)
- duke
- Člen | 650
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);
?>