【问题标题】:Laravel custom validation with rule object: Access other fields or validatorLaravel 使用规则对象进行自定义验证:访问其他字段或验证器
【发布时间】:2021-12-14 10:23:54
【问题描述】:

我正在使用 Laravel 8 中的规则对象

artisan make:rule RequireBetweenOf

https://laravel.com/docs/8.x/validation#using-rule-objects

如何访问其他字段或验证器?

我需要检查验证器中的其他数据。

我知道 Validator::extend() 作为 4. 参数它是如何工作的,但它不适用于 Illuminate\Contracts\Validation\Rule。我还看到有一个使用request() 的答案。但这是一个 hack,因为验证器数据和请求可能不一样。可能根本没有请求。

【问题讨论】:

    标签: laravel validation


    【解决方案1】:

    TL;DR

    use Illuminate\Contracts\Validation\ValidatorAwareRule;
    use Illuminate\Contracts\Validation\DataAwareRule;
    
    class RequireBetweenOf implements Rule, DataAwareRule, ValidatorAwareRule
    

    我发现密码规则正在使用验证器:\Illuminate\Validation\Rules\Password::setValidator。 在这里使用更深入的挖掘:\Illuminate\Validation\Validator::validateUsingCustomRule

    关键是这两个接口:\Illuminate\Contracts\Validation\ValidatorAwareRule\Illuminate\Contracts\Validation\DataAwareRule

    【讨论】:

      猜你喜欢
      • 2021-12-12
      • 2014-04-22
      • 2017-04-11
      • 2018-02-18
      • 2018-05-25
      • 2020-02-17
      • 2017-12-01
      • 2015-11-09
      • 2013-06-21
      相关资源
      最近更新 更多