加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

php – Yii – 从控制器动态更改规则

发布时间:2020-12-13 18:29:21 所属栏目:PHP教程 来源:网络整理
导读:假设我有一种可以有颜色的产品.根据产品类型,可能需要也可能不需要色域. 如果总是需要颜色,我会在产品型号中有以下内容 public function rules(){ return array( array('colour','required') );} 但是,我希望这是动态的,具体取决于产品类型. 这应该在控制器
假设我有一种可以有颜色的产品.根据产品类型,可能需要也可能不需要色域.

如果总是需要颜色,我会在产品型号中有以下内容

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时,将验证所需的颜色

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读