Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Laravel 5.6:所比较的值必须是相同类型的_Php_Validation_Comparison_Numeric_Laravel 5.6 - Fatal编程技术网

Php Laravel 5.6:所比较的值必须是相同类型的

Php Laravel 5.6:所比较的值必须是相同类型的,php,validation,comparison,numeric,laravel-5.6,Php,Validation,Comparison,Numeric,Laravel 5.6,我们最近将Laravel从5.5升级到5.6我有验证规则: return [ 'min_price' => ['numeric', 'nullable', 'min:0'], 'max_price' => ['numeric', 'nullable', 'min:0', 'gt:min_price'], ] 它会抛出一个错误,以防 最低价格=null,最高价格=100 最低价格=0,最高价格=99.99 最低价格=12.50,最高价格

我们最近将Laravel从5.5升级到5.6我有验证规则:

return [
            'min_price' => ['numeric', 'nullable', 'min:0'],
            'max_price' => ['numeric', 'nullable', 'min:0', 'gt:min_price'],
]
它会抛出一个错误,以防

  • 最低价格=null,最高价格=100
  • 最低价格=0,最高价格=99.99
  • 最低价格=12.50,最高价格=100
  • 最低价格=12.50,最高价格=null 它说:
  • 它说,这两个字段应该具有相同的类型,因此它不能比较整数和浮点,也不能忽略可为空的字段。
    问题在于trait
    validateAttribute
    中的方法
    validateGt
    validateGt
    validateLt
    。是否有一些方法可以扩展或覆盖该特性?

    由于没有明显的解决方案,我决定创建自己的验证器,而不使用Laravel提供的验证器:

    class ServiceProvider extends BaseServiceProvider
    {
        public function boot()
        {
            ValidatorFacade::extend('greater_than', Validator::class.'@validateGreaterThan');
            ValidatorFacade::replacer('greater_than', function ($message, $a, $b, $parameters) {
                $attributes = trans('validation.attributes');
                $other = $parameters[0];
                $other = isset($attributes[$other]) ? $attributes[$other] : $other;
    
                return str_replace(':field', $other, $message);
            });
        }
    
        public function register()
        {
        }
    }
    
    并在类似这样的验证规则中使用它

    return [
                'min_price' => ['numeric', 'nullable', 'min:0'],
                'max_price' => ['numeric', 'nullable', 'min:0', 'greater_than:min_price'],
    ]
    
    return [
                'min_price' => ['numeric', 'nullable', 'min:0'],
                'max_price' => ['numeric', 'nullable', 'min:0', 'greater_than:min_price'],
    ]