飒雅
- 飒雅 2016-09-27 已签到连续签到2天,获得了10个金钱
- 飒雅 2016-09-26 已签到连续签到1天,获得了5个金钱
你可以在保存的时候做个判断以获取保存不成功的信息。代码看起来是这样子的。
if ($model->save()) { 该干啥干啥 } else { print_r($model->errors); //获取错误信息。 }
然而我猜测错误的原因是因为你rules中声明了url是个文件。然而其理论上且实际上应该是个字符串。如果你没有办法让一个规则对应两种类型(文件和字符串)。那么你应该为文件上传单独声明一个模型。虽然这么做在视图界面需要依靠两个模型去渲染表单。但这是可以的,并且这是最好的做法。
我分段打印得到的$model->url = xxxxxxxxxxxxxxx.jpg (字符长度=》36 chars)。 数据库的字段长度为100 chars。存不进去是什么鬼
你可以在保存的时候做个判断以获取保存不成功的信息。代码看起来是这样子的。
if ($model->save()) { 该干啥干啥 } else { print_r($model->errors); //获取错误信息。 }
然而我猜测错误的原因是因为你rules中声明了url是个文件。然而其理论上且实际上应该是个字符串。如果你没有办法让一个规则对应两种类型(文件和字符串)。那么你应该为文件上传单独声明一个模型。虽然这么做在视图界面需要依靠两个模型去渲染表单。但这是可以的,并且这是最好的做法。
我试了一下,将rule file哪条给关了,然后if加了一条获取报错信息时,程序并没有报错。直接存到数据表了,但是url字段还是空的。并没有存储到上传图片的文件名
- 飒雅 回答了问题 『新手提问』图片上传问题.
其中url字段就是fileInput框。
- 飒雅 回答了问题 『新手提问』图片上传问题.
model中定义了一个存储路径与图片名转化随机码
public function upload() { $filename = Yii::$app->getSecurity()->generateRandomString() . '.' . $this->url->extension; $savePath = \Yii::getAlias('@uploadsPath/' . '/ad/') . DIRECTORY_SEPARATOR; FileHelper::createDirectory($savePath); $this->url->saveAs($savePath . $filename); return $filename; }
- 飒雅 回答了问题 『新手提问』图片上传问题.
controller
public function actionCreate() { $model = new Ad(); if ($model->load(Yii::$app->request->post())) { $model->url = UploadedFile::getInstance($model, 'url'); if (!empty($model->upload())) { $model->url = $model->upload(); } $model->published_at = strval(strtotime($model->published_at)); $model->save(); return $this->redirect(['index']); } else { return $this->render('create', [ 'model' => $model, ]); } }
- 飒雅 回答了问题 『新手提问』图片上传问题.
rule规则
{ return [ [['type', 'published_at'], 'string'], [['name'], 'string', 'max' => 255], [['url'], 'string', 'max' => 100], [['url'], 'file', 'extensions' => ['png', 'jpg', 'gif']] ]; }
- 飒雅 提出了问题『新手提问』图片上传问题.
- 飒雅 2016-09-23 已签到连续签到1天,获得了5个金钱