Podmínka addConditionOn OR
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- motorcb
- Člen | 552
Zdravím mám následující formulář:
$school = array(
1 => 'nevím',
2 => 'základní škola',
3 => 'střední škola',
4 => 'VOŠ',
5 => 'Vysoká škola'
);
$form->addRadioList('school_id', '', $school )
->setRequired( 'Vyberte školu' );
$form->addText( 'school_name', 'Název školy:' )
->addConditionOn( $form['school_id'], Form::EQUAL, 2 )
->addConditionOn( $form['school_id'], Form::EQUAL, 3 )
->addConditionOn( $form['school_id'], Form::EQUAL, 4 )
->addConditionOn( $form['school_id'], Form::EQUAL, 5 )
->setRequired( 'Zadejte jméno školy' );
Pokud uživatel vybere v radio listu jednu ze škol: 2 až 5, musí být
povinný textbox school_name
Jak na to? Moje ukázka nikdy nepožaduje vyplnit pole
school_name
Co dělám špatně?
Děkuji
- motorcb
- Člen | 552
@matej21 Paráda, díky. A co když mám:
$school = array(
1 => 'nevím',
2 => 'základní škola',
3 => 'střední škola',
4 => 'VOŠ',
5 => 'Vysoká škola'
);
$form->addRadioList('big_school', 'Vysoká škola', arraz( 0 => 'Ne', 1 => 'Ano') )
->setRequired( 'Zadejte vysoká škola' );
$form->addRadioList('school_id', '', $school )
->setRequired( 'Vyberte školu' );
$form->addText( 'school_name', 'Název školy:' )
->addConditionOn( $form['is_school'], Form::EQUAL, 1 )
->addConditionOn( $form['school_id'], ~Form::EQUAL, 1 )
->setRequired( 'Zadejte jméno školy' );
Kde school_name má být povinný když je studovaná vysoká škola ( big_school == 1) NEBO school_name !=1 ?
Jak to zapsat? Tento zápis bere pouze první podmínku:
->addConditionOn( $form['is_school'], Form::EQUAL, 1 )
->addConditionOn( $form['school_id'], ~Form::EQUAL, 1 )
- David Matějka
- Moderator | 6445
to bude snazsi tam dat callback
->addCondition(function() use ($form) {
return ...; //true nebo false
})
- motorcb
- Člen | 552
Ano, tohle funguje. ALE nezobrazí Javascriptovou hlášku Zadejte
jméno školy. Vypíše tuto chybu do eorrů u formuláře.
Dokážu nějak zachovat JS hlášku o nevyplnění pole?
Díky
->addCondition(function() use ( $form ) {
if( ( $form['is_school']->getValue() == 1 ) || ( $form['school_id']->getValue() != 1 ) )
{
return TRUE;
}
else
{
return FALSE;
}
})->setRequired( 'Zadejte jméno školy' );