Php Laravel 5.6:所比较的值必须是相同类型的
我们最近将Laravel从5.5升级到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,最高价格
return [
'min_price' => ['numeric', 'nullable', 'min:0'],
'max_price' => ['numeric', 'nullable', 'min:0', 'gt:min_price'],
]
它会抛出一个错误,以防
问题在于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'],
]