假设我有一种可以带有颜色的产品。根据产品类型,可能需要也可能不需要颜色字段。
如果始终需要颜色,我将在产品型号中添加以下内容
public function rules()
{
return array(
array('colour', 'required')
);
}
但是,我希望这取决于产品类型是动态的。
是否应该在 Controller 中完成?我可以想象在 Controller 中有类似以下内容的东西:
public function actionOrder() {
// ....
if ($product->HasColour) {
// set the colour validation to be required
} else {
// set the colour validation to be not required
}
}
解决此问题的最佳方法是什么?
谢谢
最佳答案
您可以使用方案。在模型中:
class Model extends CActiveRecord {
// ....
public function rules() {
return array(
array('colour', 'required', 'on' => 'hasColour')
);
}
// ....
}
并在 Controller 中:
public function actionOrder() {
// ....
$model = new Product();
if ($product->HasColour) {
$model->setScenario('hasColour');
}
}
因此,当模型的方案为
hasColour
时,所需的颜色将得到验证