Skip to content

Commit 0a55171

Browse files
committed
Add value (string/numeric) to validation error exception
1 parent f735e12 commit 0a55171

File tree

4 files changed

+7
-5
lines changed

4 files changed

+7
-5
lines changed

src/Actions/ValidateAction.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,10 @@ public function __construct(
1515

1616
public function execute(array $rules, mixed $value, string $key): void
1717
{
18+
$valueForLog = (is_string($value) || is_numeric($value)) ? (string) $value : null;
1819
foreach ($rules as $rule) {
1920
if ($rule->passes($value) === false) {
20-
throw $this->exceptionBuilder->validationFailed($key, $rule::class);
21+
throw $this->exceptionBuilder->validationFailed($key, $rule::class, $valueForLog);
2122
}
2223
}
2324
}

src/Builders/ExceptionBuilder.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,12 +29,13 @@ public function notAnArray(string $key): Exception
2929
return new NotSupportedDataException($key);
3030
}
3131

32-
public function validationFailed(string $key, string $ruleClassName): Exception
32+
public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception
3333
{
3434
$classNameParts = explode('\\', $ruleClassName);
3535
$shortClassName = end($classNameParts);
3636

37-
return new ValidationFailedException($key, $shortClassName . ' failed');
37+
$valueMessage = $value === null ? '' : (' with value ' . $value);
38+
return new ValidationFailedException($key, $shortClassName . ' failed' . $valueMessage);
3839
}
3940

4041
public function notXML(string $key): Exception

src/Contracts/ExceptionBuilderContract.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public function notAnArray(string $key): Exception;
1717
/**
1818
* @param class-string<RuleContract> $ruleClassName
1919
*/
20-
public function validationFailed(string $key, string $ruleClassName): Exception;
20+
public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception;
2121

2222
public function notXML(string $key): Exception;
2323
}

tests/Builders/CustomExceptionBuilder.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ public function notAnArray(string $key): Exception
2424
return new Exception('notAnArray: ' . $key);
2525
}
2626

27-
public function validationFailed(string $key, string $ruleClassName): Exception
27+
public function validationFailed(string $key, string $ruleClassName, ?string $value): Exception
2828
{
2929
return new Exception('validationFailed: ' . $key . ' ' . $ruleClassName);
3030
}

0 commit comments

Comments
 (0)