Podmíněné Form::FILLED nastaví required u labelu – jde to změnit?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
_Martin_
Generous Backer | 679
+
0
-

Ahoj, dá se nějak nastavit, aby se labelu nenastavovala třída required, pokud je validační pravidlo Form::FILLED závislé na podmínce? Mám v aplikaci formulář, kdy se k soutěži může uvést volitelně kontakt. Rád bych uživatele upozornil, pokud ke kontaktu vyplní email, ale nevyplní jméno. Což sice funguje, ale kvůli required je jméno zvýrazněno vždy jako povinné (ač není) a uživatele to mate.

$form['ownContactName']->addConditionOn($form['ownContactEmail'], Form::FILLED)
	->addRule(Form::FILLED, 'Zapomněli jste uvést jméno kontaktní osoby.');
$form['ownContactEmail']->addCondition(Form::FILLED)
	->addRule(Form::MAX_LENGTH, 'Email může obsahovat nejvýše %d znaků.', 60)
	->addRule(Form::EMAIL, 'Email je zadán špatně, zkontrolujte prosím jeho správnost.');
Martin Mates
Člen | 179
+
0
-

Řeším teď něco podobného a taky nevím, jak na to. Chtěl bych mít textový input, který je nepovinný, ale když ho uživatel vyplní, tak to aplikuje pravidlo (př. musí být zadány pouze číslice). Dá se to udělat?

vlki
Člen | 218
+
0
-

To je presne cast kodu, ktery _Martin_ postnul.

<?php
$form['ownContactEmail']->addCondition(Form::FILLED)
        ->addRule(Form::MAX_LENGTH, 'Email může obsahovat nejvýše %d znaků.', 60)
        ->addRule(Form::EMAIL, 'Email je zadán špatně, zkontrolujte prosím jeho správnost.');
?>

Toto znamena, ze pokud se nejak vyplni pole ownContactEmail, tak se na nej budou aplikovat pravidla o delce toho textu a validnosti.

mlady
Člen | 24
+
0
-

_Martin_ napsal(a):

Ahoj, dá se nějak nastavit, aby se labelu nenastavovala třída required, pokud je validační pravidlo Form::FILLED závislé na podmínce? Mám v aplikaci formulář, kdy se k soutěži může uvést volitelně kontakt. Rád bych uživatele upozornil, pokud ke kontaktu vyplní email, ale nevyplní jméno. Což sice funguje, ale kvůli required je jméno zvýrazněno vždy jako povinné (ač není) a uživatele to mate.

$form['ownContactName']->addConditionOn($form['ownContactEmail'], Form::FILLED)
	->addRule(Form::FILLED, 'Zapomněli jste uvést jméno kontaktní osoby.');
$form['ownContactEmail']->addCondition(Form::FILLED)
	->addRule(Form::MAX_LENGTH, 'Email může obsahovat nejvýše %d znaků.', 60)
	->addRule(Form::EMAIL, 'Email je zadán špatně, zkontrolujte prosím jeho správnost.');

Myslim, ze to bolo vyriesene tu

David Grudl
Nette Core | 8218
+
0
-

Vyřešeno