From 6fded3634f9851f21a6968c07401446087bf58e5 Mon Sep 17 00:00:00 2001 From: Oleg Zhulnev Date: Fri, 25 Apr 2025 13:57:18 +0300 Subject: [PATCH] [Validator] [WordCount] Treat 0 as one character word and do not exclude it --- .../Component/Validator/Constraints/WordCountValidator.php | 2 +- .../Validator/Tests/Constraints/WordCountValidatorTest.php | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/Symfony/Component/Validator/Constraints/WordCountValidator.php b/src/Symfony/Component/Validator/Constraints/WordCountValidator.php index ee090de2648de..0fe6e885adb7d 100644 --- a/src/Symfony/Component/Validator/Constraints/WordCountValidator.php +++ b/src/Symfony/Component/Validator/Constraints/WordCountValidator.php @@ -44,7 +44,7 @@ public function validate(mixed $value, Constraint $constraint): void $words = iterator_to_array($iterator->getPartsIterator()); // erase "blank words" and don't count them as words - $wordsCount = \count(array_filter(array_map(trim(...), $words))); + $wordsCount = \count(array_filter(array_map(trim(...), $words), fn ($word) => '' !== $word)); if (null !== $constraint->min && $wordsCount < $constraint->min) { $this->context->buildViolation($constraint->minMessage) diff --git a/src/Symfony/Component/Validator/Tests/Constraints/WordCountValidatorTest.php b/src/Symfony/Component/Validator/Tests/Constraints/WordCountValidatorTest.php index 3e3b760c473e7..ce1256f92c4f5 100644 --- a/src/Symfony/Component/Validator/Tests/Constraints/WordCountValidatorTest.php +++ b/src/Symfony/Component/Validator/Tests/Constraints/WordCountValidatorTest.php @@ -83,6 +83,7 @@ public static function provideValidValues() yield [new StringableValue('my ûtf 8'), 3]; yield [null, 1]; // null should always pass and eventually be handled by NotNullValidator yield ['', 1]; // empty string should always pass and eventually be handled by NotBlankValidator + yield ['My String 0', 3]; } public static function provideInvalidTypes()