在Yii2中将FileInput设置为用户可选

时间:2018-12-29 03:35:41

标签: yii2

我的表单中有一个文件输入字段,可以很好地上传文件。但是我想让用户保留一点,他们可能根本不上传任何文件。

我的代码如下所示-

模型规则-

B

表格

[['jha'],'file','skipOnEmpty' => true,'extensions' => 'pdf'],

控制器-

<?= $form->field($model, 'jha')->fileInput(['accept' => 'application/pdf']); ?>

通过此代码,如果我不更改上传字段,则会出现错误-

public function actionCreatenewworkbasic()
    {


       $model = new Workpermit();
       $model->wp_timeissued = date('Y-m-d H:i:s');

       if ($model->load(Yii::$app->request->post())) 

       {

           $timenow = date('-Y-m-d-H-i-s');
           $model->jha = UploadedFile::getInstance($model,'jha');
           $model->jha->saveAs('uploads/jha/'.$model->jha->baseName.$timenow.'.'.$model->jha->extension);

           //save the path in the db

           $model->wp_jhaattach = 'uploads/jha/'.$model->jha->baseName.$timenow.'.'.$model->jha->extension;

           $model->jha = null;
           $model->save(false);


           return $this->redirect(['availablework']); 
       }else{
            return $this->renderAjax('createnewworkbasic', [
               'model' => $model,
            ]);
       }      
    }

1 个答案:

答案 0 :(得分:2)

empty之前检查saveAs()

if ($model->load(Yii::$app->request->post())) {

    $timenow = date('-Y-m-d-H-i-s');
    $model->jha = UploadedFile::getInstance($model,'jha');

    if (!empty($model->jha)) {
       $model->jha->saveAs('uploads/jha/'.$model->jha->baseName.$timenow.'.'.$model->jha->extension);

       //save the path in the db

       $model->wp_jhaattach = 'uploads/jha/'.$model->jha->baseName.$timenow.'.'.$model->jha->extension;
    }

    $model->jha = null;
    $model->save(false);

    return $this->redirect(['availablework']);
}