Lisiace sa validacne pravidla pre pridanie zaznamu a upravu zaznamu
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- edke
- Člen | 198
Pri pridavani zaznamu je heslo povinne, tym padom aj overenie hesla. Pri upravovani ale v pripade, ze nevypni heslo, ponecha sa povodne. Jedine ak ho vyplni, az potom pride na rad porovnanie s kontrolou. Ale do jedneho zapisu som to nevedel dat. Je to mozne nejako inak ?
if ( $id == 0) {
$form->addPassword( 'password', 'Heslo:')
->addRule(Form::FILLED, 'Zadajte heslo');
$form->addPassword( 'password2', 'Overenie hesla:')
->addRule(Form::FILLED, 'Zadajte overenie hesla')
->addConditionOn($form['password'], Form::FILLED)
->addRule( Form::EQUAL, 'Obe zadané heslá sa musia zhodovať', $form['password']);
}
else
{
$form->addPassword( 'password', 'Heslo:');
$form->addPassword( 'password2', 'Overenie hesla:')
->addConditionOn($form['password'], Form::FILLED)
->addRule( Form::EQUAL, 'Obe zadané heslá sa musia zhodovať', $form['password']);
}
- David Grudl
- Nette Core | 8218
Možná by bylo srozumitelnější oddělit pravidla od definice formuláře.
$form->addPassword( 'password', 'Heslo:');
$form->addPassword( 'password2', 'Overenie hesla:');
if ( $id == 0) {
$form['password']
->addRule(Form::FILLED, 'Zadajte heslo');
$form['password2']
->addRule(Form::FILLED, 'Zadajte overenie hesla')
->addConditionOn($form['password'], Form::FILLED)
->addRule( Form::EQUAL, 'Obe zadané heslá sa musia zhodovať', $form['password']);
}
else
{
$form['password2']
->addConditionOn($form['password'], Form::FILLED)
->addRule( Form::EQUAL, 'Obe zadané heslá sa musia zhodovať', $form['password']);
}
- edke
- Člen | 198
Ano, to mi je zrejme, samozrejme sa chcem vyhnut dvojitemu pisaniu a hlavne ako si povedal, odelit definiciu od pravidiel.
Ja som ale skusal skor nieco taketo, ale to zjavne nebude fungovat, pretoze podmienky v pravidlach pracuju len s objektami formulara (interface IFormControl):
public function actionForm( $id = 0 ) {
$form = new AppForm($this, 'form');
...
$form->addText( 'login', 'Login:')
->addConditionOn( $id, ~Form::EQUAL, 0)