下面的是POST接收到的数据
Array
(
[_csrf] => MWhSQ3N3M0MGDgsoHz5jdW4mBwhHOUAuWiYHNkAtcRMGIBEFAiFsMw==
[Dynamic] => Array
(
[type] => 1
[title] => 这是标题
[images] => Array
(
[0] => http://f.cloud.com/143401345875600900.jpg
[1] => http://f.cloud.com/143401345242854600.jpg
[2] => http://f.cloud.com/143401345054916700.jpg
[3] => http://f.cloud.com/143401345542255100.jpg
)
[content] => 这是内容
[url] =>
)
)
这个是action的代码
public function actionUpdate($id)
{
$model = $this->findModel($id);
if ($model->load(Yii::$app->request->post()) && $model->save()) {
return $this->redirect(['view', 'id' => $model->id]);
} else {
return $this->render('update', [
'model' => $model,
]);
}
}
images 是 text 类型,需要储存多张图片。
问题是:YII2 有没有自动序列化的功能并且储存到字段
如果没有怎么将序列化后的images赋值给POST
群里的回答:
程涛:
1 是写在rule里
2 写在beforsave
我来了,正如我轻轻的来,不带走一片云彩。$model->load(Yii::$app->request->post()) && $model->save()
这么写直接就是将post的值直接就存入了数据库,说好的$model->validate();
进行安全过滤呢?
虽然在save前会自动进行参数合法性过滤的。
对于rules规则自动过滤法则还没研究透,但有一个场景是肯定的,那就是对要存储的值设定个默认值,比如会员的开启状态,在会员注册场景的时候在rules规则里面进行某字段比如 status,将其设定为1。这个在rules规则里面设定毫无疑问。
就楼主的需求来看,个人感觉是,完全可以写在控制器里面了。
看完了另外一个问题才看到该问题,就顺便回答了。
希望解决你的问题!
我是鬼鬼,鬼一浪人
是也!20150612
虽然我不会但是我来看一下
重写afterValidate()方法应该可以做到
这样也可以。save()
方法保存之前,你先用一个分隔符号拆分 images
属性不就好了吗?
model里的beforeSave($insert)
用过么?骚年
个人对于这种数据的分割合并处理,都是卸载beforeSave里头的。不在action里头处理这些。
好高深的样子,涨姿势了
都说这么高深,那还让小白怎么活,帖出来beforeSave 如何解决的 @FatrBaby
版主,你这个问题怎么解决的哈,遇到跟你类似的问题了,求指点