Povinný prvek formuláře v závislosti na vybrané hodnotě selectu

jedlicka
Člen | 61
+
0
-

Ahoj,

mám dva prvky (select a textarea) ve formuláři:

<?php
$states = array('0' => 'Schváleno', '1' => 'Odmítnuto');

$form = new Form;
$form->addSelect('state', 'Stav:', $states)->setAttribute('class', 'form-control');
$form->addTextArea('description', 'Popis:')->setAttribute('class', 'form-control');

$form->addSubmit('change', 'Změnit')->setAttribute('class', 'btn btn-success');
$form->onSuccess[] = [$this, 'changeState'];

?>

A potřeboval bych, aby bylo textové pole povinné, pouze při konkrétní vybrané hodnotě selectu.

Příklad
Když v selectu $form['state'] vyberu hodnotu 0 (Schváleno) ⇒ popis do pole $form['description'] není povinný a je možné formulář odeslat.
Když v selectu $form['state'] vyberu hodnotu 1 (Odmítnuto) ⇒ popis do pole $form['description'] je povinný a formulář lze odeslat až po vyplnění $form['description'].

Jak na to?

Díky moc.

Martin

MajklNajt
Člen | 471
+
+1
-

píšem z hlavy:

$form->addTextArea('description', 'Popis:')
	->setAttribute('class', 'form-control')
    ->addConditionOn($form['state'], Form::EQUAL, 1)
        ->setRequired('Musíš napísať deskripšn');
Petr Parolek
Člen | 455
+
0
-

z docky

<?php
$form->addCheckbox('newsletters', 'zasílejte mi newslettery');

$form->addEmail('email', 'E-mail:')
    // pokud je checkbox zaškrtnut
    ->addConditionOn($form['newsletters'], Form::EQUAL, true)
        // pak vyžaduj e-mail
        ->setRequired('Zadejte e-mailovou adresu');
?>