飒雅

飒雅

急流勇退,谓之知机

  • 财富值5
  • 威望值0
  • 总积分115

个人信息

  • 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个金钱
助理 等级规则
115/200
资料完整度
100/100
用户活跃度
0/100

Ta的关注

2

Ta的粉丝

6

Ta的访客

10