我想在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 中创建自定义验证规则,但出现错误 我希望错误得到解决,我可以自定义我的规则
我得到了解决方案,关于如何调用验证调用的问题
就跑
php artisan rule:make ValidatePackageItems
和生成的类,之后你必须这样调用它
'items' => ['required', new ValidPackageItem()]
我在启动方法的
Providers/AppServiceProvider.php
中注册了验证规则,试图以这种方式调用它
items => 'required,valid_package_items,some_condition
如您所见,我真的不知道问题是出在注册和调用还是其他方面,但我没有时间尝试注册。