2016-09-06 126 views
7

我在yii2项目中使用kartik文件输入小部件。直到这里使用“initialPreview”选项将显示一个特定的职位已经上传的图片的更新页面被访问yii2 kartik FileInput - 文件输入为空

http://demos.krajee.com/widget-details/fileinput

一切都很好。预览工作,但是当表单被提交时,文件输入是空的,表单不会被验证。 Poster Image (256x376) cannot be blank.

<?php 
    echo $form->field($model, 'posterImage')->widget(FileInput::classname(), [ 
     'options' => [ 
     'multiple' => true, 
     'accept' => 'image/*', 
     ], 
     'pluginOptions' => [ 
     'maxImageWidth' => 265, 
     'maxImageHeight' => 376, 
     'minImageWidth' => 265, 
     'minImageHeight' => 376, 
     'previewFileType' => 'image', 
     'allowedFileExtensions' => [ 
      'jpg', 'jpeg' 
      ], 
      'showUpload' => false, 
      'maxFileSize' => 200, 
      'maxFileCount' => 1, 
      'initialPreview' => [ 
      $model->posterImage ? Html::img($model->posterImage, ['width' => '100%']) : NULL, 
      ], 
      'initialPreviewConfig' => [ 
      ['url' => $model->posterImage], 
      ], 
      'initialPreviewAsData' => false, 
      'overwriteInitial' => true, 
       ] 
        ]); 
        ?> 
+0

你可以分享你的'model'类? –

+0

我不认为它与模型类(我不能分享)有关。我只是想预览(它的工作)上传,而不必再次选择。 – Ciprian

+0

您是否检查验证规则上的'skipOnEmpty' http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html –

回答

2

您可以在yii2 model规则使用skipOnEmptyupdatescenarios

public function rules() 
    { 
     return [ 
      [['posterImage'], 'file', 'skipOnEmpty' => true, 'extensions' => 'png, jpg'], 
     ]; 
    } 
+0

'[['posterImage'],'file','on'=>'update','skipOnEmpty'=> true ,'extensions'=>'jpeg,jpg'],'但它不会跳过它。 – Ciprian

1

@ciprian initialPreview只显示图像。并不显示文件输入对象的上传图像。所以,当你重新上传,文件对象将空,以便抛出错误

+0

我知道,但是如何设置文件对象? – Ciprian

+0

@ciprian,你可以参考本教程了解更多信息。 http://webtips.krajee.com/advanced-upload-using-yii2-fileinput-widget/ – dungphanxuan

相关问题