Skip to content

Commit 7ff2d8f

Browse files
bizleyterabytesoftw
authored andcommitted
Fix #20231: Fix regression introduced in #20167 in yii\validators\FileValidator
1 parent b29d2c3 commit 7ff2d8f

3 files changed

Lines changed: 10 additions & 6 deletions

File tree

framework/CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ Yii Framework 2 Change Log
1616
------------------------
1717

1818
- Bug #20232: Fix regression introduced in `GHSA-cjcc-p67m-7qxm` while attaching behavior defined by `__class` array key (erickskrauch)
19+
- Bug #20231: Fix regression introduced in #20167 in `yii\validators\FileValidator` (bizley)
1920

2021
2.0.51 July 18, 2024
2122
--------------------

framework/validators/FileValidator.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -210,7 +210,7 @@ public function validateAttribute($model, $attribute)
210210
{
211211
$files = $this->filterFiles(is_array($model->$attribute) ? $model->$attribute : [$model->$attribute]);
212212
$filesCount = count($files);
213-
if ($filesCount === 0 && $this->minFiles > 0) {
213+
if ($filesCount === 0) {
214214
$this->addError($model, $attribute, $this->uploadRequired);
215215

216216
return;

tests/framework/validators/FileValidatorTest.php

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,11 @@ public function testValidateAttributeMultiple(): void
108108
]);
109109
$m = FakedValidationModel::createWithAttributes(['attr_files' => 'path']);
110110
$val->validateAttribute($m, 'attr_files');
111-
$this->assertFalse($m->hasErrors('attr_files'));
111+
$this->assertTrue($m->hasErrors('attr_files'));
112112
$m = FakedValidationModel::createWithAttributes(['attr_files' => []]);
113113
$val->validateAttribute($m, 'attr_files');
114-
$this->assertFalse($m->hasErrors('attr_files'));
114+
$this->assertTrue($m->hasErrors('attr_files'));
115+
$this->assertSame($val->uploadRequired, current($m->getErrors('attr_files')));
115116

116117
$m = FakedValidationModel::createWithAttributes(
117118
[
@@ -327,7 +328,7 @@ public function testValidateArrayAttributeWithMinMaxOneAndOneFile()
327328
'type' => 'image/png',
328329
],
329330
]
330-
)[0];
331+
)[0]; // <-- only one file
331332
$model = FakedValidationModel::createWithAttributes(['attr_images' => [$files]]);
332333

333334
$validator->validateAttribute($model, 'attr_images');
@@ -415,15 +416,17 @@ public function testValidateAttribute(): void
415416
$val->validateAttribute($m, 'attr_files');
416417
$this->assertFalse($m->hasErrors());
417418
$val->validateAttribute($m, 'attr_files_empty');
418-
$this->assertFalse($m->hasErrors('attr_files_empty'));
419+
$this->assertTrue($m->hasErrors('attr_files_empty'));
420+
$this->assertSame($val->uploadRequired, current($m->getErrors('attr_files_empty')));
419421

420422
// single File with skipOnEmpty = false
421423
$val = new FileValidator(['skipOnEmpty' => false]);
422424
$m = $this->createModelForAttributeTest();
423425
$val->validateAttribute($m, 'attr_files');
424426
$this->assertFalse($m->hasErrors());
425427
$val->validateAttribute($m, 'attr_files_empty');
426-
$this->assertFalse($m->hasErrors('attr_files_empty'));
428+
$this->assertTrue($m->hasErrors('attr_files_empty'));
429+
$this->assertSame($val->uploadRequired, current($m->getErrors('attr_files_empty')));
427430
$m = $this->createModelForAttributeTest();
428431

429432
// too big

0 commit comments

Comments
 (0)