Commit b3b9bd35 by Zhandos Nuftiev

fix isEmpty method for file validator.

parent cd7e51df
...@@ -229,7 +229,9 @@ class FileValidator extends Validator ...@@ -229,7 +229,9 @@ class FileValidator extends Validator
*/ */
public function isEmpty($value, $trim = false) 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 ...@@ -30,6 +30,8 @@ class FakedValidationModel extends Model
return [ return [
[['val_attr_a', 'val_attr_b'], 'required', 'on' => 'reqTest'], [['val_attr_a', 'val_attr_b'], 'required', 'on' => 'reqTest'],
['val_attr_c', 'integer'], ['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 ...@@ -107,6 +107,68 @@ class FileValidatorTest extends TestCase
$val->validateAttribute($m, 'attr_files'); $val->validateAttribute($m, 'attr_files');
$this->assertTrue($m->hasErrors()); $this->assertTrue($m->hasErrors());
$this->assertTrue(stripos(current($m->getErrors('attr_files')), 'you can upload at most') !== false); $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