2016-07-24 7 views
1

Ich verwende Kartik FileInput.Yii2 Kartei Fileinput Validierung

Ich kann nicht validieren, d. H. Validierungsfehler wird immer noch angezeigt, wenn die erforderlichen Dateien angegeben werden. Folgendes ist mein Code. Die Dateien werden ordnungsgemäß hochgeladen. aber es wird immer noch angezeigt, dass "Bitte eine Datei hochladen".

Ausblick:

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 

    ] 
    ]); 

Aktion:

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); 

    } 
} 

Modelleinstellungen:

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

Upload-Funktion:

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

Möglicherweise gibt es einige Konflikte in JS/jQuery-Dateien. Überprüfen Sie die Konsole, wenn Fehler auftreten. –

Antwort

0

in Ihrem model für image_file sollten Sie setzen 'skipOnEmpty'=>true, das hochgeladene Bild wird in $_FILE sein.

Verwandte Themen