Commit b3b9bd35 by Zhandos Nuftiev

fix isEmpty method for file validator.

parent cd7e51df
......@@ -229,7 +229,9 @@ class FileValidator extends Validator
*/
public function isEmpty($value, $trim = false)
{
return !$value instanceof UploadedFile || $value->error == UPLOAD_ERR_NO_FILE;
$value = is_array($value) && !empty($value) ? $value[0] : $value;
return !$value instanceof UploadedFile || $value->error == UPLOAD_ERR_NO_FILE;
}
/**
......
......@@ -30,6 +30,8 @@ class FakedValidationModel extends Model
return [
[['val_attr_a', 'val_attr_b'], 'required', 'on' => 'reqTest'],
['val_attr_c', 'integer'],
['attr_images', 'file', 'maxFiles' => 3, 'types' => ['png'], 'on' => 'validateMultipleFiles'],
['attr_image', 'file', 'types' => ['png'], 'on' => 'validateFile']
];
}
......
......@@ -107,6 +107,68 @@ class FileValidatorTest extends TestCase
$val->validateAttribute($m, 'attr_files');
$this->assertTrue($m->hasErrors());
$this->assertTrue(stripos(current($m->getErrors('attr_files')), 'you can upload at most') !== false);
$m = FakedValidationModel::createWithAttributes(
[
'attr_images' => $this->createTestFiles(
[
[
'name' => 'image.png',
'size' => 1024,
'type' => 'image/png'
],
[
'name' => 'image.png',
'size' => 1024,
'type' => 'image/png'
],
[
'name' => 'text.txt',
'size' => 1024
],
]
)
]
);
$m->setScenario('validateMultipleFiles');
$this->assertFalse($m->validate());
$this->assertTrue(stripos(current($m->getErrors('attr_images')), 'Only files with these extensions are allowed') !== false);
$m = FakedValidationModel::createWithAttributes(
[
'attr_images' => $this->createTestFiles(
[
[
'name' => 'image.png',
'size' => 1024,
'type' => 'image/png'
],
[
'name' => 'image.png',
'size' => 1024,
'type' => 'image/png'
],
]
)
]
);
$m->setScenario('validateMultipleFiles');
$this->assertTrue($m->validate());
$m = FakedValidationModel::createWithAttributes(
[
'attr_image' => $this->createTestFiles(
[
[
'name' => 'text.txt',
'size' => 1024,
],
]
)
]
);
$m->setScenario('validateFile');
$this->assertFalse($m->validate());
}
/**
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment