您好,欢迎访问一九零五行业门户网

YII中model层的一个小问题

下面是controller层的代码,用来保存表单数据:
public function actionadd(){ $categorymodel = new category(); if(isset($_post['category'])){ $categorymodel->attributes = $_post['category']; if($categorymodel->save()){ $this->redirect(array('index')); } }

我查看了cactiverecord中的save方法是这样写的:
public function save($runvalidation=true,$attributes=null){ if(!$runvalidation || $this->validate($attributes)) return $this->getisnewrecord() ? $this->insert($attributes) : $this->update($attributes); else return false;}

是我的理解的话应该是将$attribute传进去,但实际上并没有传进去。而且假设不传进去,也因该有:
if($attributes==null){$attributes=$this->attributes;}

之类的啊!怎么连这个都没有?
回复内容: 下面是controller层的代码,用来保存表单数据:
public function actionadd(){ $categorymodel = new category(); if(isset($_post['category'])){ $categorymodel->attributes = $_post['category']; if($categorymodel->save()){ $this->redirect(array('index')); } }

我查看了cactiverecord中的save方法是这样写的:
public function save($runvalidation=true,$attributes=null){ if(!$runvalidation || $this->validate($attributes)) return $this->getisnewrecord() ? $this->insert($attributes) : $this->update($attributes); else return false;}

是我的理解的话应该是将$attribute传进去,但实际上并没有传进去。而且假设不传进去,也因该有:
if($attributes==null){$attributes=$this->attributes;}

之类的啊!怎么连这个都没有?
谢邀。
题主有没有对 category model 使用 rule 规则,这涉及到了 yii 中的 safe 机制,只有 category 中的属性是 safe 时,才能通过 $categorymodel->attributes 接收到数据。请参考:
《understanding safe validation rules》
总结了一篇博文,题主可以看下: 《源码分析 yii - save 机制》
其它类似信息

推荐信息