Dans un formulaire peut-on modifier les règles de validations selon la réponse à une question?
Exemple :
Je reçois une demande d’ami.
Lorsque je choisi de répondre oui le formulaire est envoyé
Lorsque je choisi non le formulaire m’impose la saisie d’un motif de refus dans textarea ou un choix multiple…(la rule devient ‘required’ pour l’attributs par exemple)
?
apparemment il semble exister un système de scenarios mais je ne maitrise pas du tout…
les scenarios permettent de sélectionner les règles de validation qui sont appliquées sur les attributs de ton formulaire. Par défaut, toutes les règles de validation s’appliquent, mais il est possible de spécifier un nom de scénario pour chaque règle, et dans ce cas, la régle s’applique uniquement si le scénario en question.
Par exemple :
public function rules(){
return array(
// pas de scenario : tous ces attributes sont obligatoires
array('name, subject, body', 'required'),
// pour le scénario 'refu', l'attribut 'motif' est obligatoire
array('motif', 'required', 'on' => 'refu'),
);
}
Dans ton cas,tu peux par exemple détecter dans ton contrôleur, quelle est l’option sélectionnée par l’utilisateur :
acceptation : on ne fait rien, on laisse le scénario par défaut dans lequel l’attribut ‘motif’ n’est pas obligatoire
refus : juste avant la validation, on défini le scénario comme étant ‘refu’. Pour ce faire, tu dois utiliser la méthode setScenario(nom_du_scenario) sur le modèle concerné
Voilà, j’espère que cela t’aura permis de comprendre un peu mieux les scénario.