Yii - de modifier dynamiquement les règles à partir du contrôleur.
Disons que j'ai un produit qui peut avoir une couleur. Selon le type de produit, le champ de couleur peut ou peut ne pas être nécessaire.
Si la couleur est toujours nécessaire, je voudrais avoir la suite dans le modèle de produit
public function rules()
{
return array(
array('colour', 'required')
);
}
Cependant, je veux que ce soit dynamique en fonction du type de produit.
Cela devrait-il être fait dans le contrôleur? J'imagine avoir quelque chose comme ce qui suit dans le contrôleur:
public function actionOrder() {
//....
if ($product->HasColour) {
//set the colour validation to be required
} else {
//set the colour validation to be not required
}
}
Quelle est la meilleure façon d'aborder cette question?
Grâce
Si c'est spécifique à un type de produit, donc un modèle, qui devrait être fait dans le modèle.
Mais ce que vous faites dans votre contrôleur est également correct, si votre validation forminput. Donc je suppose que vous n'êtes pas de faire des erreurs ici.
Le modèle ne connais pas le produit jusqu'à actionOrder() est exécutée, non?
Que dois-je faire dans le contrôleur? Comment puis-je ajouter le modèle de la règle dans le contrôleur?
Mais ce que vous faites dans votre contrôleur est également correct, si votre validation forminput. Donc je suppose que vous n'êtes pas de faire des erreurs ici.
Le modèle ne connais pas le produit jusqu'à actionOrder() est exécutée, non?
Que dois-je faire dans le contrôleur? Comment puis-je ajouter le modèle de la règle dans le contrôleur?
OriginalL'auteur Adrian Gunawan | 2012-05-01
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser le scénario. Dans le modèle:
Et dans le contrôleur:
Donc, de couleur désirée sera validée lorsque le modèle du scénario est
hasColour
seul problème est qu'il ne pas ajouter de l'astérisque
*
à l'étiquette tho 🙁OriginalL'auteur Rezan Achmad
Maintenant $form a deux champs requis.
OriginalL'auteur bores
Une approche consiste à utiliser une règle de validation personnalisée. Par exemple, la règle:
Et puis le programme de validation de la méthode de la même classe de modèle:
Plus d'infos: Créez votre propre règle de validation
OriginalL'auteur Nate Barr
Si vous voulez faire plus compliqué logique, alors que les scénarios pourraient ne pas répondre à vos besoins. Ensuite, vous pouvez remplacer la méthode init et de faire toutes les logiques qui définissent les règles de validation de là-bas, en ajoutant les résultats de dollars validationRules tableau. Et le dans les règles() la méthode que vous venez de retour de ce tableau. Quelque chose comme ça:
OriginalL'auteur RB_