Yii中小物件save()方法原理与使用
2017-01-20 15:02
183 查看
Yii当中使用小物件实现前端数据与后台数据库交互的时候,save()方法应该是比较重要的一个部分,但是之前对于save()方法的理解比较片面。
以上两个方法,大家应该都比较熟悉。
1. 表单数据校验save()方法后边有一个环节会执行模型的rules()方法,也就校验表单了。
2. 流程:save()—->validate()—->rules()
3. 验证用户信息:模型->validate()来验证用户信息
4. rules()方法在Model当中定义,在前端页面中对小物件属性进行设置,如果出错可以在前端页面有所展示
例如:如果为空直接不赋值了,也不需要走到save()进行保存在验证发现出错来提示。
这时候需要我们将错误的信息通过一定的方式传递到前端,我采用的是setFlash,在前端用getFlash对其进行获取显示。
Yii setFlash getFlash用法
其余的原理也是类似的,如果直接进行判断,可以提前进行,不要等走到save()才去验证。
1、创建对象形式不同,对save()方法调用效果不同
方法一:
插入一条新的记录$object = new Model();//Model为当前需要的表单创建的模型 if(isset($_POST['Model'])){//用attributes记录传递的值 $object -> attributes = $_POST['Model']; //将Model的在前端页面存入的值保存到数据库中 $object.save()//调用save()方法时,使用的是insert语句
方法二:
更新一条记录$object = Model::model();//Model为当前需要的表单创建的模型 if(isset($_POST['Model'])){//用attributes记录传递的值 $object -> attributes = $_POST['Model']; //将Model的在前端页面存入的值保存到数据库中 $object.save()//调用save()方法时,使用的是update语句
以上两个方法,大家应该都比较熟悉。
2、打印save保存错误 的方法
if($user->save) {// 处理 } else {//处理报错 var_dump($user->getErrors()); }
3、save()方法与Model当中的rules()之间关系
以上内容只是简单的对save()方法的依葫芦画瓢,没有知道其运行时的正真原理,根据之前看过的教学视频和最近使用的经验准备下面详细讲述一下。1、save()执行时去了哪?
1. 表单数据校验save()方法后边有一个环节会执行模型的rules()方法,也就校验表单了。
2. 流程:save()—->validate()—->rules()
3. 验证用户信息:模型->validate()来验证用户信息
4. rules()方法在Model当中定义,在前端页面中对小物件属性进行设置,如果出错可以在前端页面有所展示
4、在save()方法执行之前判断输入内容
到这里,一般都不会有什么问题,但是前面的方法一与方法二都是直接获取用户传递的数据,直到执行save()方法,才进行判断是否输入合理正确,有时和我们需要的判断不一致,因为在获取页面提交数据之后,可能还有其他操作,进一步再处理数据,所以这里需要自己定义用户输入的内容,将输入的内容在执行save()方法之前进行判断。例如:如果为空直接不赋值了,也不需要走到save()进行保存在验证发现出错来提示。
if(isset($_POST['Model'])&&$_POST['Model']['objectname'] != null){//如果为空直接不赋值了 $trTeam -> attributes = $_POST['Model']; //用attributes记录传递的值 //...... }else{ Yii::app()->user->setFlash('Failed','名称为空!'); }
这时候需要我们将错误的信息通过一定的方式传递到前端,我采用的是setFlash,在前端用getFlash对其进行获取显示。
Yii setFlash getFlash用法
其余的原理也是类似的,如果直接进行判断,可以提前进行,不要等走到save()才去验证。
相关文章推荐
- wincap使用方法、原理;IP Helper使用方法
- SQL游标原理和使用方法
- 如何使用web_reg_save_param方法保存的多个参数?
- 游标原理和使用方法
- RunDll32 的使用方法与实现原理
- 理解va_list、va_start、va_arg、va_end原理及使用方法
- richTextBox+openFileDialog+saveFileDialog的使用方法
- 如何使用web_reg_save_param方法保存的多个参数?
- 如何使用web_reg_save_param方法保存的多个参数?
- windowform下 richTextBox+openFileDialog+saveFileDialog的使用方法 + 控件不获取焦点时自动关闭
- SQL Server 中游标的使用原理与方法
- 游标-SQL游标原理和使用方法
- SQL游标原理和使用方法
- [转]SQL游标原理和使用方法
- epoll原理及使用方法
- 如何使用web_reg_save_param方法保存的多个参数?
- 使用XmlDocument的Save方法容易出错的问题
- 如何使用web_reg_save_param方法保存的多个参数?