Formulář – podmíněná validace

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
-

Pokud vytvářím fomrulář a chci u něj nastavit podmíněnou validaci. Je možné přichytit to k elementu, který se odkazuje na elemnt, který bude déle.

Lépe asi napoví kód:

$form->addTextarea('aboutGame', 'Popis:')
	    ->addConditionOn($form['published'], Form::EQUAL, TRUE)
	    ->addRule(Form::REQUIRED);
$form->addCheckbox('published', 'Publikovat');

pokud udělám toto, tak na mě vyskočí, že komponenta published neexistuje. a musím vložit tu podmíněnou validaci až na za tu část kdy je přidaný ten publisehd. Přijde mi to na jednu stranu logické, na stranu druhou v kódu taky kolikrát volám jiné komponenty a tvoří se až později. Uniká mi něco?

Potom bych měl ještě jednu věc k těmhle podmíněným validacím. V případě povinných inputů přidávám k labelu hvězdičku. Je nějak řešeno, pokud splním podmínku, tak aby se u těch daných elementů nastavil zase label jako required. Jelikož pak to vypadá tak, že sice vyskočí alert při valdiaci, ale label označený stejně není.

David Matějka
Moderator | 6445
+
0
-

ten control musi existovat, proste udelej:

$aboutGame = $form->addTextarea('aboutGame', 'Popis:');
$form->addCheckbox('published', 'Publikovat');
$aboutGame->addConditionOn($form['published'], Form::EQUAL, TRUE)
->addRule(Form::REQUIRED);

na stranu druhou v kódu taky kolikrát volám jiné komponenty a tvoří se až později

jako myslis v presenteru $this['foo']? tenhle kod prave tu komponentu vytvori…

Jiří Nápravník
Člen | 710
+
0
-

Díky za reakci. Ano tak to řeším teď, ale myslel, jsem nejde nějak lépe to řešit, že bych měl pěkně každý element oddělen a nemusel to pak „dodělávat zpětne“.

JJ, chápu, že právě $this[‚foo‘] tu komponentu vytvoří, myslel jsem však jestli to nějak vnitřně není řešeno ve Formu, že se tam takhle taky vytvoří a jde to tedy definovat i „předčasně“.