Skip to content

Commit 30af859

Browse files
author
Mark Scherer
committed
Fix validation regarding multiple() and valid 0 value.
1 parent 464dc9c commit 30af859

File tree

2 files changed

+10
-6
lines changed

2 files changed

+10
-6
lines changed

src/Validation/Validation.php

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -654,7 +654,9 @@ public static function multiple($check, array $options = [], $caseInsensitive =
654654
$defaults = ['in' => null, 'max' => null, 'min' => null];
655655
$options += $defaults;
656656

657-
$check = array_filter((array)$check);
657+
$check = array_filter((array)$check, function ($value) {
658+
return ($value || is_numeric($value));
659+
});
658660
if (empty($check)) {
659661
return false;
660662
}

tests/TestCase/Validation/ValidationTest.php

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2141,17 +2141,18 @@ public function testMultiple()
21412141
$this->assertFalse(Validation::multiple(''));
21422142
$this->assertFalse(Validation::multiple(null));
21432143
$this->assertFalse(Validation::multiple([]));
2144-
$this->assertFalse(Validation::multiple([0]));
2145-
$this->assertFalse(Validation::multiple(['0']));
2144+
$this->assertTrue(Validation::multiple([0]));
2145+
$this->assertTrue(Validation::multiple(['0']));
21462146

21472147
$this->assertTrue(Validation::multiple([0, 3, 4, 5], ['in' => range(0, 10)]));
21482148
$this->assertFalse(Validation::multiple([0, 15, 20, 5], ['in' => range(0, 10)]));
21492149
$this->assertFalse(Validation::multiple([0, 5, 10, 11], ['in' => range(0, 10)]));
21502150
$this->assertFalse(Validation::multiple(['boo', 'foo', 'bar'], ['in' => ['foo', 'bar', 'baz']]));
21512151
$this->assertFalse(Validation::multiple(['foo', '1bar'], ['in' => range(0, 10)]));
21522152

2153-
$this->assertTrue(Validation::multiple([0, 5, 10, 11], ['max' => 3]));
2154-
$this->assertFalse(Validation::multiple([0, 5, 10, 11, 55], ['max' => 3]));
2153+
$this->assertFalse(Validation::multiple([1, 5, 10, 11], ['max' => 3]));
2154+
$this->assertTrue(Validation::multiple([0, 5, 10, 11], ['max' => 4]));
2155+
$this->assertFalse(Validation::multiple([0, 5, 10, 11, 55], ['max' => 4]));
21552156
$this->assertTrue(Validation::multiple(['foo', 'bar', 'baz'], ['max' => 3]));
21562157
$this->assertFalse(Validation::multiple(['foo', 'bar', 'baz', 'squirrel'], ['max' => 3]));
21572158

@@ -2166,7 +2167,8 @@ public function testMultiple()
21662167
$this->assertFalse(Validation::multiple([0, 5, 9, 8, 6, 2, 1], ['in' => range(0, 10), 'max' => 5]));
21672168
$this->assertFalse(Validation::multiple([0, 5, 9, 8, 11], ['in' => range(0, 10), 'max' => 5]));
21682169

2169-
$this->assertFalse(Validation::multiple([0, 5, 9], ['in' => range(0, 10), 'max' => 5, 'min' => 3]));
2170+
$this->assertTrue(Validation::multiple([0, 5, 9], ['in' => range(0, 10), 'max' => 5, 'min' => 3]));
2171+
$this->assertFalse(Validation::multiple(['', '5', '9'], ['max' => 5, 'min' => 3]));
21702172
$this->assertFalse(Validation::multiple([0, 5, 9, 8, 6, 2, 1], ['in' => range(0, 10), 'max' => 5, 'min' => 2]));
21712173
$this->assertFalse(Validation::multiple([0, 5, 9, 8, 11], ['in' => range(0, 10), 'max' => 5, 'min' => 2]));
21722174

0 commit comments

Comments
 (0)