前端之家收集整理的这篇文章主要介绍了
php – Yii – 从控制器动态更改规则,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_
301_0@
假设我有一种可以有颜色的产品.根据产品类型,可能需要也可能不需要色域.
如果总是需要颜色,我会在产品型号中有以下内容
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
}
}
解决这个问题的最佳方法是什么?
谢谢
您可以使用方案.在模型中:
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时,将验证所需的颜色