yii2中的load(),validate(), save()等的保存、修改的测试

没有时间去读、分析代码。网上抄一些观点、测试结果的方式来总结:

1、调用 save()、insert()、update() 这三个方法时,会自动调用yii\base\Model::validate()方法。如果save(0)或save(false)时将会取消验证。

2、load()只是加载数据:这个事情好像不太对。以下代码放在模型中,将save()改为save(0),将rules中的验证规则故意去掉一项,数据没有保存成功,似乎也执行了验证。

public function add($data)
    {
        $data['ProductCat']['createtime'] = time();
        if ($this->load($data) && $this->save()) {
            return true;
        }
        return false;
    }

在load的同时加了验证,则在保存的时候就要去掉验证:

public function reg($data){
		$this->scenario = 'adminadd';

		if($this->load($data) && $this->validate()){
			$this->adminpass = md5($this->adminpass);
			if($this->save(false)){
				return true;
			}
		}
		return false;
	}

3、在一些复杂一点的程序中,比如要自定义验证提示信息。比如要弹出JS提示框。则不方便用load来加载数据,并验证数据。只能将post数据接收到变量中,再判断变量,调用封闭的js弹出框代码。至少目前没有看到好的解决方案。

你可能感兴趣的:(php+mysql)