【问题标题】:Laravel Validating An Array in Update Method unique filterLaravel 在更新方法唯一过滤器中验证数组
【发布时间】: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


    【解决方案1】:

    您好,您可以在您的函数中尝试此代码

    $validated = $request->validate([

    id' => 'required',
    
    key' => 'string|unique.settings|max:255|required',
    
    value' => 'array|nullable|max:255',
    
    ]);
    

    【讨论】:

    • 谢谢你。但是我无法访问我班级中的 $request .. 代码。验证是在一个扩展 FormRequest 类的类中。类似于本教程itsolutionstuff.com/post/…
    • 你好 pedram shabani,这是一个独特的验证 public function rules() { return [ 'name' => 'required|max:10', 'slug' => $this->getSlugRules(), ]; }
    猜你喜欢
    • 2014-08-20
    • 2020-03-30
    • 2014-06-28
    • 2018-08-09
    • 2019-02-26
    • 2018-06-12
    • 2015-04-24
    • 1970-01-01
    • 2018-07-17
    相关资源
    最近更新 更多