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?

OriginalL'auteur Adrian Gunawan | 2012-05-01