_ancientmoon 2012-08-27 10:36:14 3081次浏览 1条回复 0 0 0

最近关于CForm与CActiveRecord,遇到了一些问题,在这里将自己理解的问题解决方案跟大家分享一下。

  1. CForm与CActiveRecord 1.1 CForm: 代表一个包含指定表单输入的表单对象. 其中loadData()方法:加载提交的数据到相关的表单模型中。 这个方法将穿过所有和这个表单相关的模型和子表单,大量的指派提交的数据到模型中。 1.2 CActiveRecord:代表关系数据的类的基类。 它实现了活动记录设计模式,一种流行的对象关系映射(ORM)技术。 其中save()方法:保存记录之前将执行验证。 如果验证失败,该记录将不会保存。 1.3 问题:如果表单中的属性没有经过rules的required验证,则在提交数据的时候,不能存入数据库。 解决:对于没有在rules中出现的字段,yii不对其进行交换。也就是在 $model->attributes=$_POST[]时,不会有值。故应该添加$model->字段=$_POST[‘模型’][‘字段’],才能将值存入数据库。 1.4 问题:如果属性在rules中有required验证,而在数据表中没有与之相对应的字段,则在提交表单的时候会报错。 解决:如果在数据表中没有相对应的字段,则在model中需要自定义属性,同时这些属性在rules中不能有required验证。而为了让这些属性的数据能够存入数据库,在save()之前需要添加代码$model->字段=$_POST[‘模型’][‘字段’]
  • 回复于 2012-08-27 16:24 举报

    对于不需要验证的字段,可以加一个safe验证规则:array('test', 'safe'),

您需要登录后才可以回复。登录 | 立即注册