Povinný e-mail nebo telefon – formulář

Jeden z klasických případů je, že chceme, aby uživatel vyplnil e-mail, nebo telefon. Může vyplnit oba kontakty, nebo jen jeden, ale nesmí se stát, aby nevyplnin nic. V tomto nám krásně usnadní práci Nette.

pro podmínku na jiném prvku se používá addConditionOn(). Prvním parametrem je prvek na který se podmínka odvolává, druhým parametrem je typ podmínky a třetím nepovinným je argument.

Celý kód by mohl vypadat takto:

            $form->addText('mail', 'E-mail:')
                    ->addCondition(Form::FILLED) //pokud je email vyplněn
                        ->addRule(Form::EMAIL, 'prosím zadejte korektní e-mailovou adresu'); // pak musí být platná e-mailová adresa

            $form->addText('tel', 'Telefon:')
                    ->addConditionOn($form['mail'], ~Form::FILLED) //pokud email není vyplněn
                        ->addRule(Form::FILLED, 'prosím zadejte email nebo telefon') //pak musí být vyplněn telefon
                    ->addCondition(Form::FILLED) //pokud je telefon vyplněn
                        ->addRule(Form::PATTERN, 'prosím zadejte korektní telefon', '^[+(]{0,2}[0-9 ().-]{9,}'); // pak musí odpovídat regularnímu výrazu

Pozor! addConditionOn() musí být  před ostatními podmínkami. Pokud by jsme prvně dali podmínku zda je telefon vyplněn, tak by se při nevyplněném poli,  již podmínky pod první podmínkou nehodnotily:

            $form->addText('tel', 'Telefon:')
                    ->addCondition(Form::FILLED) //pokud je telefon vyplněn, pokračuj na další pravidla
                        ->addRule(Form::PATTERN, 'prosím zadejte korektní telefon', '^[+(]{0,2}[0-9 ().-]{9,}')
                    ->addConditionOn($form['mail'], ~Form::FILLED)
                        ->addRule(Form::FILLED, 'prosím zadejte email nebo telefon');
Označeno v Nette

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

*

Můžete používat následující HTML značky a atributy: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="">

O AUTOROVI BLOGU

Jmenuji se Jan Matoušek a jsem vývojář webových aplikacích.

Mé portfolio