diff --git a/framework/validators/FileValidator.php b/framework/validators/FileValidator.php index b09cfa5..ae92736 100644 --- a/framework/validators/FileValidator.php +++ b/framework/validators/FileValidator.php @@ -167,7 +167,7 @@ class FileValidator extends Validator protected function validateValue($file) { if (!$file instanceof UploadedFile || $file->error == UPLOAD_ERR_NO_FILE) { - return $this->skipOnEmpty ? null : [$this->uploadRequired, []]; + return [$this->uploadRequired, []]; } switch ($file->error) { case UPLOAD_ERR_OK: @@ -225,6 +225,14 @@ class FileValidator extends Validator } /** + * @inheritdoc + */ + public function isEmpty($value, $trim = false) + { + return !$value instanceof UploadedFile || $value->error == UPLOAD_ERR_NO_FILE; + } + + /** * Converts php.ini style size to bytes * * @param string $sizeStr $sizeStr diff --git a/framework/validators/ImageValidator.php b/framework/validators/ImageValidator.php index 4bdbc23..52fb235 100644 --- a/framework/validators/ImageValidator.php +++ b/framework/validators/ImageValidator.php @@ -144,12 +144,8 @@ class ImageValidator extends FileValidator */ protected function validateValue($file) { - if ($this->skipOnEmpty && (!$file instanceof UploadedFile || $file->error == UPLOAD_ERR_NO_FILE)) { - return null; - } else { - $result = parent::validateValue($file); - return empty($result) ? $this->validateImage($file) : $result; - } + $result = parent::validateValue($file); + return empty($result) ? $this->validateImage($file) : $result; } /** diff --git a/tests/unit/framework/validators/FileValidatorTest.php b/tests/unit/framework/validators/FileValidatorTest.php index b8a9f0d..6593120 100644 --- a/tests/unit/framework/validators/FileValidatorTest.php +++ b/tests/unit/framework/validators/FileValidatorTest.php @@ -170,8 +170,8 @@ class FileValidatorTest extends TestCase $val->validateAttribute($m, 'attr_files'); $this->assertFalse($m->hasErrors()); $val->validateAttribute($m, 'attr_files_empty'); - $this->assertFalse($m->hasErrors('attr_files_empty')); - $m = $this->createModelForAttributeTest(); + $this->assertTrue($m->hasErrors('attr_files_empty')); + $this->assertSame($val->uploadRequired, current($m->getErrors('attr_files_empty'))); // single File with skipOnEmpty=false $val = new FileValidator(['skipOnEmpty' => false]);