Skip to content

Commit a77abad

Browse files
TheCelavifabpot
authored andcommitted
[Validator] Improvement: provide file basename for constr. violation messages in FileValidator.
1 parent 743129f commit a77abad

File tree

2 files changed

+9
-0
lines changed

2 files changed

+9
-0
lines changed

src/Symfony/Component/Validator/Constraints/FileValidator.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,10 +138,12 @@ public function validate($value, Constraint $constraint)
138138
}
139139

140140
$sizeInBytes = filesize($path);
141+
$basename = $value instanceof UploadedFile ? $value->getClientOriginalName() : basename($path);
141142

142143
if (0 === $sizeInBytes) {
143144
$this->context->buildViolation($constraint->disallowEmptyMessage)
144145
->setParameter('{{ file }}', $this->formatValue($path))
146+
->setParameter('{{ name }}', $this->formatValue($basename))
145147
->setCode(File::EMPTY_ERROR)
146148
->addViolation();
147149

@@ -158,6 +160,7 @@ public function validate($value, Constraint $constraint)
158160
->setParameter('{{ size }}', $sizeAsString)
159161
->setParameter('{{ limit }}', $limitAsString)
160162
->setParameter('{{ suffix }}', $suffix)
163+
->setParameter('{{ name }}', $this->formatValue($basename))
161164
->setCode(File::TOO_LARGE_ERROR)
162165
->addViolation();
163166

@@ -189,6 +192,7 @@ public function validate($value, Constraint $constraint)
189192
->setParameter('{{ file }}', $this->formatValue($path))
190193
->setParameter('{{ type }}', $this->formatValue($mime))
191194
->setParameter('{{ types }}', $this->formatValues($mimeTypes))
195+
->setParameter('{{ name }}', $this->formatValue($basename))
192196
->setCode(File::INVALID_MIME_TYPE_ERROR)
193197
->addViolation();
194198
}

src/Symfony/Component/Validator/Tests/Constraints/FileValidatorTest.php

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -176,6 +176,7 @@ public function testMaxSizeExceeded($bytesWritten, $limit, $sizeAsString, $limit
176176
->setParameter('{{ size }}', $sizeAsString)
177177
->setParameter('{{ suffix }}', $suffix)
178178
->setParameter('{{ file }}', '"'.$this->path.'"')
179+
->setParameter('{{ name }}', '"'.basename($this->path).'"')
179180
->setCode(File::TOO_LARGE_ERROR)
180181
->assertRaised();
181182
}
@@ -278,6 +279,7 @@ public function testBinaryFormat($bytesWritten, $limit, $binaryFormat, $sizeAsSt
278279
->setParameter('{{ size }}', $sizeAsString)
279280
->setParameter('{{ suffix }}', $suffix)
280281
->setParameter('{{ file }}', '"'.$this->path.'"')
282+
->setParameter('{{ name }}', '"'.basename($this->path).'"')
281283
->setCode(File::TOO_LARGE_ERROR)
282284
->assertRaised();
283285
}
@@ -356,6 +358,7 @@ public function testInvalidMimeType()
356358
->setParameter('{{ type }}', '"application/pdf"')
357359
->setParameter('{{ types }}', '"image/png", "image/jpg"')
358360
->setParameter('{{ file }}', '"'.$this->path.'"')
361+
->setParameter('{{ name }}', '"'.basename($this->path).'"')
359362
->setCode(File::INVALID_MIME_TYPE_ERROR)
360363
->assertRaised();
361364
}
@@ -386,6 +389,7 @@ public function testInvalidWildcardMimeType()
386389
->setParameter('{{ type }}', '"application/pdf"')
387390
->setParameter('{{ types }}', '"image/*", "image/jpg"')
388391
->setParameter('{{ file }}', '"'.$this->path.'"')
392+
->setParameter('{{ name }}', '"'.basename($this->path).'"')
389393
->setCode(File::INVALID_MIME_TYPE_ERROR)
390394
->assertRaised();
391395
}
@@ -402,6 +406,7 @@ public function testDisallowEmpty()
402406

403407
$this->buildViolation('myMessage')
404408
->setParameter('{{ file }}', '"'.$this->path.'"')
409+
->setParameter('{{ name }}', '"'.basename($this->path).'"')
405410
->setCode(File::EMPTY_ERROR)
406411
->assertRaised();
407412
}

0 commit comments

Comments
 (0)