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);
}
}
おそらく、JS/jQueryファイルに矛盾があります。エラーがある場合は、コンソールを確認してください。 –