2016-07-24 7 views
1

私はkartik FileInputを使用しています。Yii2 Kartikファイル入力の検証

妥当性を確認できません。つまり、必要なファイルを提供する際に妥当性検査エラーが表示されます。以下は私のコードです。ファイルは適切にアップロードされます。それでも「ファイルをアップロードしてください」と表示されています。

ビュー:

echo $form->field($model, 'image_file[]')->widget(FileInput::classname(), [ 
    'pluginOptions' => [ 
     'uploadUrl'=>Url::to('/kw/used-cars/upload'), 
     'browseOnZoneClick'=>true, 
     'uploadAsync'=> true, 
     'maxFileCount'=> 10, 
     'minFileCount'=> 4, 
     'validateInitialCount'=> true, 
     'overwriteInitial'=> false, 

    ], 
    'pluginEvents'=>[ 
     "fileclear" => "function() { log('fileclear'); }", 
     'filebatchselected'=>'function(event, files) { 

     var $input = $("#vehicles-image_file"); 
    // alert($input); 
// trigger upload method immediately after files are selected 
$input.fileinput("upload"); 
}' 
    ], 
    'options' => [ 
     'accept' => 'image/*', 
     'multiple'=>true 

    ] 
    ]); 

処置:

public function actionUpload() 
{ 
    $model = new Vehicles(); 
    $model->image_file = UploadedFile::getInstances($model, 'image_file'); 
    // print_R($model->fld_image);exit; 
    $images = ''; 
    if ($model->image_file) { 
     foreach ($model->image_file as $file) { 
      $img_name = Yii::$app->getSecurity()->generateRandomString(); 

      $file->saveAs('uploads/' . $img_name . '.' . $file->extension); 
      $images .= $img_name.'.'.$file->extension.'###'; 

     } 
     $model->image_file = $images; 
     return true; 
     //return json_encode($model->image_file); 

    } 
} 

モデルセッティング:

[['image_name'], 'string', 'max' => 2556], 
     [['image_file'], 'file', 'extensions' => 'jpeg, jpg, png,  gif','skipOnEmpty'=>false, 'maxSize'=>20*1024*1024, 'maxFiles'=>1000], 

アップロード機能:

public function actionUpload() 
{ 
    $model = new Vehicles(); 
    $model->image_file = UploadedFile::getInstances($model, 'image_file'); 
    // print_R($model->fld_image);exit; 
    $images = ''; 
    if ($model->image_file) { 
     foreach ($model->image_file as $file) { 
      $img_name = Yii::$app->getSecurity()->generateRandomString(); 

      $file->saveAs('uploads/' . $img_name . '.' . $file->extension); 
      $images .= $img_name.'.'.$file->extension.'###'; 

     } 
     $model->image_file = $images; 
     return true; 
     //return json_encode($model->image_file); 

    } 
} 
+0

おそらく、JS/jQueryファイルに矛盾があります。エラーがある場合は、コンソールを確認してください。 –

答えて

0

modelの場合はimage_fileを入力してください。'skipOnEmpty'=>true,の場合、アップロードされる画像は$_FILEになります。