trylife
- trylife 2015-06-14 已签到连续签到5天,获得了20个金钱
- trylife 赞了回答
$query->where(['not in', 'id', [1, 2, 3]]);
- trylife 2015-06-13 已签到连续签到4天,获得了20个金钱
- trylife 赞了回答
这样也可以。
if ($model->load(Yii::$app->request->post())) { $model->images = serialize($model->images); if ($model->save()) { return $this->redirect(['view', 'id' => $model->id]); } }
- trylife 赞了回答
重写afterValidate()方法应该可以做到
- trylife 赞了回答
研究了一下,目前有了具体答案了
Yii::$app->request->post();
以上这一句的作用是判断是否是通过post提交,且可以给提交的name设定一个默认值,比如:Yii::$app->request->post('name','user_name');
我有发现当第二个参数不设定的时候返回的就是null,没啥用途。真正让数据进入model层的在于 Model 下面的load()方法,载入的是提交后的值如下代码:
$model = new Model_Name(); if($model->load(Yii::$app->request->post())){ echo '数据载入成功'; }else{ echo '非post提交,所以载入失败'; }
以上就是获取提交数据的简单粗暴的方法。到这里依然还没进入主题。
根据楼主的需求是,要对提交的值进行再次操作,也就是在入库前做些序列化也好或者是对数据进行进一步处理的好。怎么做呢?
从追踪代码来看,绕了好大的一个圈子,最后回到了Model层上,这个类中的某些方法完全可以完成我们的需求,请看代码://我们假设提交的数据里有个image $model = new Model_Name(); //这里对数据进行预处理 if($model->load(Yii::$app->request->post())){ //数据载入成功 //这里对数据进行处理,拿image来举例。此刻你应该记得跟post没关系了,数据都在内存中了,由model接手了 //以下句话的意思查看方法说明即可明白 $model->setAttribute('image',serialize($model->getAttribute('image'))); //程序执行到这一步,image这个值已经不再是提交来的值,已经被更改了 //此刻数据在存储前或者是更新数据前,该model的image已经被更改,如此就做到了我们需要的结果,不是吗 if($model->validate()){ $model->save(); echo '存储成功!'; }else{ echo '部分数据不合法或者其他异常'; } }else{ echo '非post提交,所以载入失败'; }
总结:主要的核心症结在于,post过来后的数据,接下来的工作是由model层来完成的。就不要继续玩$_POST了。
希望可以帮到你!如果大家觉得还有其他的比较方便的方式,还望告知!
我是鬼鬼,鬼一浪人
是也!201150612 研究了一下,目前有了具体答案了
Yii::$app->request->post();
以上这一句的作用是判断是否是通过post提交,且可以给提交的name设定一个默认值,比如:Yii::$app->request->post('name','user_name');
我有发现当第二个参数不设定的时候返回的就是null,没啥用途。真正让数据进入model层的在于 Model 下面的load()方法,载入的是提交后的值如下代码:
$model = new Model_Name(); if($model->load(Yii::$app->request->post())){ echo '数据载入成功'; }else{ echo '非post提交,所以载入失败'; }
以上就是获取提交数据的简单粗暴的方法。到这里依然还没进入主题。
根据楼主的需求是,要对提交的值进行再次操作,也就是在入库前做些序列化也好或者是对数据进行进一步处理的好。怎么做呢?
从追踪代码来看,绕了好大的一个圈子,最后回到了Model层上,这个类中的某些方法完全可以完成我们的需求,请看代码://我们假设提交的数据里有个image $model = new Model_Name(); //这里对数据进行预处理 if($model->load(Yii::$app->request->post())){ //数据载入成功 //这里对数据进行处理,拿image来举例。此刻你应该记得跟post没关系了,数据都在内存中了,由model接手了 //以下句话的意思查看方法说明即可明白 $model->setAttribute('image',serialize($model->getAttribute('image'))); //程序执行到这一步,image这个值已经不再是提交来的值,已经被更改了 //此刻数据在存储前或者是更新数据前,该model的image已经被更改,如此就做到了我们需要的结果,不是吗 if($model->validate()){ $model->save(); echo '存储成功!'; }else{ echo '部分数据不合法或者其他异常'; } }else{ echo '非post提交,所以载入失败'; }
总结:主要的核心症结在于,post过来后的数据,接下来的工作是由model层来完成的。就不要继续玩$_POST了。
希望可以帮到你!如果大家觉得还有其他的比较方便的方式,还望告知!
我是鬼鬼,鬼一浪人
是也!201150612您对我的理解很到位,并且还纠结着是写到MODEL做操作还是写到CONTROLLER做操作。