AddConditionOn v kontejneru, nedefinová proměnná form

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

Ahoj, mám formulář s kontejner a jedním checkboxem, který chci kontrolovat v kontejneru zda je hodnota ve formuláři email. Nicméně kontejner mi nebere proměnou $form, tudíž jsem pochopil že tam musím nějak předat rodiče toho kontejneru že? Jak tedy lze předat kontejneru prvek s formuláře? A ještě bych se chtěl otázat, když mám na nějaké prvky setRequired a zároveň je možnost nechat schované přes toggle, tak jak při odeslání formu ty skryté prvke ignorovat? Jde to nějak, nebo by to mělo jít cestou contejnerů? Díky.

$form = $this->factory->create();
$form->addCheckbox('mail', 'Send mails');
$clients = $form->addDynamic('clients', function (Container $client) {
        			$client->addSubmit('remove', 'Remove clients')->setAttribute('class', 'ui grey button')->addRemoveOnClick();
       				$client->addText('mail')
       					->setAttribute('placeholder', 'mail adrress')
       					->addConditionOn($form['mail'], Form::EQUAL, FALSE)
       					->addRule($form::EMAIL, 'Set email');

    	}, 1);
CZechBoY
Člen | 3608
+
0
-

Protože v anonymní funkci nemáš dostupné proměnné „z venku“. Použij use:

$form = $this->factory->create();
$form->addCheckbox('mail', 'Send mails');
$clients = $form->addDynamic('clients', function (Container $client) use ($form) {
                    $client->addSubmit('remove', 'Remove clients')->setAttribute('class', 'ui grey button')->addRemoveOnClick();
                    $client->addText('mail')
                        ->setAttribute('placeholder', 'mail adrress')
                        ->addConditionOn($form['mail'], Form::EQUAL, FALSE)
                        ->addRule($form::EMAIL, 'Set email');

        }, 1);

Editoval CZechBoY (21. 9. 2016 21:43)

lukendo
Člen | 96
+
0
-

@CZechBoY
Díky :)