addCondition a addConditionOn

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

Potřebuji udělat, kdyžt někdo zadá hodnotu, aby odpovídala patternu. Zároveň pokud je zatrhnutý checkbox nějaké jiného inputu, aby byla položka povinná? Jak na to? Jde to nějak přímo z podmínek ve formulářích nebo musím napsat validaci „ručně“?

Tohle co mám, tak je jen v případě, že je zatrhnuto. Ale ten poslední potřebuji za každých podmínek. Když dám prvně to druhé pravidlo, tak se zase vůbec nebere ta addConditionOn…

	$video->addText('videoLength', 'Délka videa')
		->addConditionOn($form['article-published'], Form::EQUAL, TRUE)
		->setRequired()
		->addCondition(Form::FILLED)
		->addRule(Form::PATTERN, 'Délka musí být zadána ve formátu minuty:sekundy', '[0-9]+:[0-9]{2}');
jiri.pudil
Nette Blogger | 1028
+
+4
-

Imo musíš obě podmínky navěsit zvlášť od rootu (komponenty), pokud je chceš mít nezávislé. Metoda addCondition(On) totiž vždycky vytváří a vrací novou condition branch:

$videoLength = $video->addText('videoLength', 'Délka videa');
$videoLength->addConditionOn($form['article-published'], Form::EQUAL, TRUE)
	->setRequired();
$videoLength->addCondition(Form::FILLED)
	->addRule(Form::PATTERN, 'Délka musí být zadána ve formátu minuty:sekundy', '[0-9]+:[0-9]{2}');
David Matějka
Moderator | 6445
+
+5
-

jak pise @jiri.pudil .. druhou moznosti je pouzit endCondition:

$video->addText('videoLength', 'Délka videa')
    ->addConditionOn($form['article-published'], Form::EQUAL, TRUE)
    ->setRequired()
	->endCondition()
    ->addCondition(Form::FILLED)
    ->addRule(Form::PATTERN, 'Délka musí být zadána ve formátu minuty:sekundy', '[0-9]+:[0-9]{2}');
Jiří Nápravník
Člen | 710
+
0
-

Díky oběma! Samozřejmě funguje.