toggle() u ručně vykresleného formuláře
- reskator
- Člen | 18
Nevíte někdo, jak se dá použít toggle() v případě, že formulář vykresluju „ručně“? Pokud mám formulář definovaný takto:
<?php
class pokusnyForm extends Form
{
public function __construct(IContainer $parent = NULL, $name = NULL)
{
parent::__construct($parent, $name);
$pohlavi = array(
'1' => 'muž',
'2' => 'žena',
);
$this->addGroup();
$this->addRadioList('idpoh', '', $pohlavi)
->addCondition(Form::EQUAL, 2)
->toggle('zena');
$this->addGroup()->setOption('container', Html::el('div')->id('zena'));
$this->addUpload('file', '');
$this->setCurrentGroup(NULL);
$this->addSubmit('save', 'Uložit fotku')
->getControlPrototype()->class('insButton');
}
?>
a v šabloně si vykreslím formulář pomocí
{widget pokusnyForm}
tak toggle() funguje jak má (pokud zvolím v radiolistu „žena“) tak se zobrazí další prvek formuláře (addUpload), jinak tento prvek není vidět. Potřeboval bych to použít pro ostylovaný formulář, který vykresluju v šabloně ručně takto:
{form pokusnyForm}
<?php $form->render('begin') ?>
<?php $form->render('errors') ?>
<div id="registrace-form">
<table>
<tr>
<th><?php echo $form['idpoh']->label ?></th>
<td><?php echo $form['idpoh']->control ?></td>
</tr>
<tr>
<td><?php echo $form['file']->control ?></td>
</tr>
</table>
</div>
<div id="registrace-tlacitko"><?php echo $form['save']->control ?></div>
<?php $form->render('end') ?>
{/form pokusnyForm}
V tomto případě už toggle() nefunguje a vykreslí se vždy všechny prvky. Dá se to nějak pořešit, abych mohl formátovat jednotlivé prvky formuláře pomocí css a zároveň mohl skrýt určité prvky formu pomocí toggle?
Editoval reskator (8. 2. 2012 21:38)
- Tomáš Votruba
- Moderator | 1114
Toggle
pracuje s #id ve stylu, tedy tvůj příklad růčo a ve
zkratce:
Pro vykreslení můžeš používat formulářová makra.
<table>
{form toggleForm}
<tr>
<td>{label idpoh /}</td><td>{input idpoh}</td>
</tr>
<tr id="zena">
<td>{label file /}</td><td>{input file}</td>
</tr>
{/form}
</table>
Dodatky:
- kód tu dávej do příslušných tagů (<?php … ?>), ať je to pěkně barevné
- class u prvků se nastavuje přes
->setAttribute("class", "myClass")
, viz. dokumentace - vše o toggle si můžeš přečíst tu
Editoval Schmutzka (8. 2. 2012 23:55)