【发布时间】:2022-10-13 22:01:52
【问题描述】:
我是 Laravel 的新手。我尝试在 Laravel 9 中验证一个数组。 对于使用独特的过滤器,我遇到了问题。 起初,我尝试使用这种方式
$rules = [
'*.id' => 'integer|required',
'*.key' => 'string|unique.settings|max:255|required',
'*.value' => 'array|nullable|max:255',
];
对于 Create 方法,这是可行的,但对于更新,逻辑是错误的。我需要忽略当前字段。
对于更新,我尝试使用这种方式
private function update(): array
{
foreach ($this->request->all() as $keys => $values) {
// dd($values['id']);
$rules[$keys .'.id' ] = 'integer|required';
$rules[$keys .'.key'] = ['string|max:255|required',Rule::unique('settings','key')->ignore($values['id'])];
$rules[$keys .'.value'] = 'array|nullable|max:255';
}
// dd($rules);
return $rules;
}
我收到了这个错误
BadMethodCallException: Method Illuminate\Validation\Validator::validateString|max does not exist. in file /Users/mortezashabani/code/accounting/vendor/laravel/framework/src/Illuminate/Validation/Validator.php on line 1534
如何在 Laravel 9 的更新方法中验证数组?
附言:没有Rule::unique('settings','key')->ignore($values['id'])],所有过滤器都可以正常工作
【问题讨论】:
标签: laravel validation laravel-9 laravel-formrequest