Skip to content

Commit e89b2b0

Browse files
committed
tweak behavior of decimal rule
1 parent 5e9cd3b commit e89b2b0

File tree

3 files changed

+28
-4
lines changed

3 files changed

+28
-4
lines changed

src/Illuminate/Validation/Concerns/ReplacesAttributes.php

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,26 @@ protected function replaceDateFormat($message, $attribute, $rule, $parameters)
7070
return str_replace(':format', $parameters[0], $message);
7171
}
7272

73+
/**
74+
* Replace all place-holders for the decimal rule.
75+
*
76+
* @param string $message
77+
* @param string $attribute
78+
* @param string $rule
79+
* @param array<int,int> $parameters
80+
* @return string
81+
*/
82+
protected function replaceDecimal($message, $attribute, $rule, $parameters)
83+
{
84+
return str_replace(
85+
':decimal',
86+
isset($parameters[1])
87+
? $parameters[0].'-'.$parameters[1]
88+
: $parameters[0],
89+
$message
90+
);
91+
}
92+
7393
/**
7494
* Replace all place-holders for the different rule.
7595
*

src/Illuminate/Validation/Concerns/ValidatesAttributes.php

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -576,8 +576,12 @@ public function validateDecimal($attribute, $value, $parameters)
576576

577577
$decimals = strlen(end($matches));
578578

579+
if (! isset($parameters[1])) {
580+
return $decimals == $parameters[0];
581+
}
582+
579583
return $decimals >= $parameters[0] &&
580-
(! isset($parameters[1]) || $decimals <= $parameters[1]);
584+
$decimals <= $parameters[1];
581585
}
582586

583587
/**

tests/Validation/ValidationValidatorTest.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2466,12 +2466,12 @@ public function testValidateDecimal()
24662466
$v = new Validator($trans, ['foo' => '1.2'], ['foo' => 'Decimal:2,3']);
24672467
$this->assertFalse($v->passes());
24682468

2469-
$v = new Validator($trans, ['foo' => '1.234'], ['foo' => 'Decimal:2']);
2470-
$this->assertTrue($v->passes());
2471-
24722469
$v = new Validator($trans, ['foo' => '1.23'], ['foo' => 'Decimal:2']);
24732470
$this->assertTrue($v->passes());
24742471

2472+
$v = new Validator($trans, ['foo' => '1.233'], ['foo' => 'Decimal:2']);
2473+
$this->assertFalse($v->passes());
2474+
24752475
$v = new Validator($trans, ['foo' => '1.2'], ['foo' => 'Decimal:2']);
24762476
$this->assertFalse($v->passes());
24772477

0 commit comments

Comments
 (0)