Laravel 10 自定义规则

问题描述 投票:0回答:1

我想在Laravel 10中创建一个自定义规则,我使用了php artisan rule:make ValidPackageItem,生成了这个类

<?php

namespace App\Rules;

use Closure;
use Illuminate\Contracts\Validation\ValidationRule;

class ValidPackageItems implements ValidationRule
{
    /**
     * Run the validation rule.
     *
     * @param  \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString  $fail
     */
    public function validate(string $attribute, mixed $value, Closure $fail): void
    {
        //
    }
}

并在控制器中使用它

$validator = Validator::make($request->all(),
            [
                'items' => 'required|valid_package_items'
            ]
        );

现在调用这个函数时,我得到这个错误

App\Rules\ValidPackageItems::validate(): Argument #3 ($fail) must be of type Closure, array given

我什至不知道验证器传递给这个自定义规则的是什么来了解问题,即使我改变了

* @param  \Closure(string): \Illuminate\Translation\PotentiallyTranslatedString  $fail

to \Closure(array): 它没有解决它,我删除了 Closure 声明并使其只是 $fail ,它进入了类但是验证器总是抛出错误消息,即使数据是正确的

我曾经使用可调用规则,但它在 Laravel 10 中贬值了

有人知道解决方案吗?提前致谢

我想在 Laravel X10 中创建自定义验证规则,但出现错误 我希望错误得到解决,我可以自定义我的规则

laravel-validation laravel-10
1个回答
0
投票

我得到了解决方案,关于如何调用验证调用的问题

就跑

php artisan rule:make ValidatePackageItems

和生成的类,之后你必须这样调用它

'items' => ['required', new ValidPackageItem()]

我在启动方法的

Providers/AppServiceProvider.php
中注册了验证规则,试图以这种方式调用它

items => 'required,valid_package_items,some_condition

如您所见,我真的不知道问题是出在注册和调用还是其他方面,但我没有时间尝试注册。

© www.soinside.com 2019 - 2024. All rights reserved.