假设我有一个可以有颜色的产品。根据产品类型,可能需要也可能不需要色域。
如果总是需要颜色,我会在产品模型中包含以下内容
public function rules()
{
return array(
array('colour', 'required')
);
}
但是,我希望它是动态的,具体取决于产品类型。
这应该在控制器中完成吗?我想象控制器中有类似以下内容的内容:
public function actionOrder() {
// ....
if ($product->HasColour) {
// set the colour validation to be required
} else {
// set the colour validation to be not required
}
}
解决这个问题的最佳方法是什么?
Thanks
您可以使用场景。在模型中:
class Model extends CActiveRecord {
// ....
public function rules() {
return array(
array('colour', 'required', 'on' => 'hasColour')
);
}
// ....
}
在控制器中:
public function actionOrder() {
// ....
$model = new Product();
if ($product->HasColour) {
$model->setScenario('hasColour');
}
}
因此,当模型场景满足时,将验证所需的颜色hasColour
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)