2016-09-06 10 views
7

yii2プロジェクトでkartikファイル入力ウィジェットを使用しています。yii2 kartik FileInput - 空のファイル入力

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

特定のポストのためにすでにアップロードされた画像が「initialPreview」オプションを使用して表示されている場合、更新ページがアクセスされるまで、すべてが細かいです。プレビューは機能しますが、フォームが送信されると、ファイル入力は空になり、フォームは検証されません。 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

でyii2 modelルールにskipOnEmptyを使用することができ、エラー投げるので、空になりますか? –

+0

私はそれがモデルクラス(私は共有できません)と関係がないと思います。私はちょうど再度選ぶことなくアップロードされるプレビュー(作品)をしたい。 – Ciprian

+0

バリデーションルールで 'skipOnEmpty'をチェックしてください。http://www.yiiframework.com/doc-2.0/guide-input-file-upload.html –

答えて

2

あなたはあなたの `model`クラスを共有することができupdatescenarios

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 only show image。アップロード画像のファイル入力オブジェクトを表示しない。あなたは再度アップロードするときに、Fileオブジェクトは、

+0

私は知っていますが、どのようにファイルオブジェクトを設定しますか? – Ciprian

+0

@ciprianについては、このチュートリアルを参照してください。 http://webtips.krajee.com/advanced-upload-using-yii2-fileinput-widget/ – dungphanxuan

関連する問題