龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > web编程 > php编程 >

Yii中对CUniqueValidator使用附加字段结合判断

时间:2014-07-22 14:49来源: 作者: 点击:
分享到:
需求,在AR中,name字段需要结合site_id来验证唯一,但是直接在rules中定义的话,无效。经多次测试,是由于无法获取该附加字段的当前值,如片段1。于是添加一个自定义的验证方法,见
需求,在AR中,name字段需要结合site_id来验证唯一,但是直接在rules中定义的话,无效。经多次测试,是由于无法获取该附加字段的当前值,如片段1。
于是添加一个自定义的验证方法,见片段2。
如有更好方案,欢迎提供交流,谢谢!
public function rules()
{
    return array(
        array('name', 'unique', 'criteria' => array('condition' => "`user_site_id`=>'{$this->user_site_id}'")),
    );
}

2. [代码]自定义验证规则     跳至 [1] [2] [全屏预览]

    public function rules()
    {
        return array(
            array('name', 'validateSiteUnique');
        );
    }

    public function validateSiteUnique($attribute, $param)
    {
        if (!$this->hasErrors()) {
            $siteUniqueCriteria = new CDbCriteria();
            $siteUniqueCriteria->addCondition("`user_site_id`='{$this->user_site_id}'");
            $validator = new CUniqueValidator();
            $validator->attributes = array($attribute);
            $validator->criteria = $siteUniqueCriteria;
            $validator->validate($this);
        }
    }
精彩图集

赞助商链接