Załóżmy, że mam produkt, który może mieć kolor. W zależności od rodzaju produktu pole koloru może być wymagane lub nie.Yii - dynamicznie zmieniaj reguły ze sterownika
Jeśli zawsze jest wymagany kolor, chciałbym mieć następujące parametry w modelu produktu
public function rules()
{
return array(
array('colour', 'required')
);
}
Jednakże chcę to być dynamiczny w zależności od rodzaju produktu.
Czy należy to zrobić w kontrolerze? Wyobrażam sobie posiadanie czegoś w kontrolerach:
public function actionOrder() {
// ....
if ($product->HasColour) {
// set the colour validation to be required
} else {
// set the colour validation to be not required
}
}
Jaki jest najlepszy sposób podejścia do tego?
Dzięki
Jeśli jest specyficzne dla rodzaju produktu, a więc modelu, który należy wykonać w modelu. – Zombaya
Ale to, co robisz w kontrolerze, jest również poprawne, jeśli walidujesz forminarność. Sądzę, że nie popełniasz tutaj błędów. – Zombaya
Model nie zna produktu, dopóki nie zostanie wykonane działanie actionOrder(), nie? –