diff --git a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php index 35492c65b6e6..ae610385437b 100644 --- a/src/Illuminate/Validation/Concerns/ValidatesAttributes.php +++ b/src/Illuminate/Validation/Concerns/ValidatesAttributes.php @@ -673,7 +673,7 @@ public function validateDecimal($attribute, $value, $parameters) $matches = []; - if (preg_match('/^[+-]?\d*\.?(\d*)$/', $value, $matches) !== 1) { + if (preg_match('/^[+-]?\d*\.?(\d*)$/', (string) $value, $matches) !== 1) { return false; } @@ -1699,7 +1699,7 @@ public function validateMaxDigits($attribute, $value, $parameters) $length = strlen((string) $value); - return ! preg_match('/[^0-9]/', $value) && $length <= $parameters[0]; + return ! preg_match('/[^0-9]/', (string) $value) && $length <= $parameters[0]; } /** @@ -1809,7 +1809,7 @@ public function validateMinDigits($attribute, $value, $parameters) $length = strlen((string) $value); - return ! preg_match('/[^0-9]/', $value) && $length >= $parameters[0]; + return ! preg_match('/[^0-9]/', (string) $value) && $length >= $parameters[0]; } /** diff --git a/tests/Validation/ValidationValidatorTest.php b/tests/Validation/ValidationValidatorTest.php index a862b522f24d..b781c449fc1a 100755 --- a/tests/Validation/ValidationValidatorTest.php +++ b/tests/Validation/ValidationValidatorTest.php @@ -3256,6 +3256,12 @@ public function testValidateMaxDigitsDoesNotThrowOnNonStringValue() $trans = $this->getIlluminateArrayTranslator(); $v = new Validator($trans, ['x' => ['array']], ['x' => 'max_digits:5']); $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['x' => 123], ['x' => 'max_digits:5']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['x' => 123456], ['x' => 'max_digits:5']); + $this->assertFalse($v->passes()); } public function testValidateMinDigitsDoesNotThrowOnNonStringValue() @@ -3263,6 +3269,12 @@ public function testValidateMinDigitsDoesNotThrowOnNonStringValue() $trans = $this->getIlluminateArrayTranslator(); $v = new Validator($trans, ['x' => ['array']], ['x' => 'min_digits:1']); $this->assertFalse($v->passes()); + + $v = new Validator($trans, ['x' => 123], ['x' => 'min_digits:2']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['x' => 1], ['x' => 'min_digits:2']); + $this->assertFalse($v->passes()); } public function testValidateDoesntStartWith() @@ -3718,6 +3730,12 @@ public function testValidateDecimal() $this->assertTrue($v->passes()); $v = new Validator($trans, ['foo' => '123.34'], ['foo' => 'Decimal:0,2']); $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['foo' => 123], ['foo' => 'Decimal:0']); + $this->assertTrue($v->passes()); + + $v = new Validator($trans, ['foo' => 1.23], ['foo' => 'Decimal:0,3']); + $this->assertTrue($v->passes()); } public function testValidateInt()