Replace `{id}` placeholder in rules with the model's key
This commit is contained in:
parent
7f73189f74
commit
6e2049afd5
|
|
@ -25,28 +25,31 @@ function rules($rules, array $messages = [], array $customAttributes = []): Clos
|
||||||
$rules = [$rules];
|
$rules = [$rules];
|
||||||
}
|
}
|
||||||
|
|
||||||
return function (callable $fail, $value, $model, Context $context, Field $field) use ($rules, $messages, $customAttributes) {
|
return function (callable $fail, $value, Model $model, Context $context, Field $field) use (
|
||||||
|
$rules,
|
||||||
|
$messages,
|
||||||
|
$customAttributes
|
||||||
|
) {
|
||||||
$key = $field->getName();
|
$key = $field->getName();
|
||||||
$validationRules = [$key => []];
|
|
||||||
$validationMessages = [$key => []];
|
|
||||||
|
|
||||||
foreach ($rules as $k => $v) {
|
$validatorRules = [$key => []];
|
||||||
|
|
||||||
|
foreach ($rules as $k => $rule) {
|
||||||
|
$rule = str_replace('{id}', $model->getKey(), $rule);
|
||||||
|
|
||||||
if (! is_numeric($k)) {
|
if (! is_numeric($k)) {
|
||||||
$validationRules[$key.'.'.$k] = $v;
|
$validatorRules[$key.'.'.$k] = $rule;
|
||||||
} else {
|
} else {
|
||||||
$validationRules[$key][] = $v;
|
$validatorRules[$key][] = $rule;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach ($messages as $k => $v) {
|
$validation = Validator::make(
|
||||||
if (! is_numeric($k)) {
|
$value !== null ? [$key => $value] : [],
|
||||||
$validationMessages[$key.'.'.$k] = $v;
|
$validatorRules,
|
||||||
} else {
|
$messages,
|
||||||
$validationMessages[$key][] = $v;
|
$customAttributes
|
||||||
}
|
);
|
||||||
}
|
|
||||||
|
|
||||||
$validation = Validator::make($value !== null ? [$key => $value] : [], $validationRules, $validationMessages, $customAttributes);
|
|
||||||
|
|
||||||
if ($validation->fails()) {
|
if ($validation->fails()) {
|
||||||
foreach ($validation->errors()->all() as $message) {
|
foreach ($validation->errors()->all() as $message) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue