写出这样的POST [ 2.0 版本 ]
$_POST['images'] = serialize($_POST['images']);
怎么写出这个在YII2里。用YII2的方法。
最佳答案
-
研究了一下,目前有了具体答案了
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共 2 条回复
其他 2 个回答
-
xiaomengzi 回答于 2015-06-12 15:21 举报
Yii::$app->request->post();//$_POST
trylife Beijing
注册时间:2015-03-26
最后登录:2020-12-07
在线时长:51小时55分
最后登录:2020-12-07
在线时长:51小时55分
- 粉丝39
- 金钱1626
- 威望40
- 积分2536