Validation Laravel验证可为空或数字
我使用的是Laravel 5.4 我在表单中有两个字段: 行程公里和行程率Validation Laravel验证可为空或数字,validation,laravel-5,Validation,Laravel 5,我使用的是Laravel 5.4 我在表单中有两个字段: 行程公里和行程率 两个字段都必须是数字 这两个字段都是可选的,但如果行程公里数不为空,则必须输入行程率 我的规则: “行驶公里数”=>“数值可为空”, “行程率”=>“有时需要:行程公里” 问题是如果行程公里为空,我仍然会得到一个关于行程率的错误,因为它为空 如果我在行程率上加上nullable,即使行程公里不是空的,我也不会得到错误 为了解决这个问题,我在控制器中执行了以下操作: if(empty($request->travel
if(empty($request->travel_km) && empty($request->travel_rate)) {
$this->validate($request,
[
'customer_id' => 'required',
'service_date' => 'required',
'labour_hrs' => 'numeric|nullable',
'hourly_rate' => 'sometimes|required_with:labour_hrs',
],
[
'customer_id' => 'Please enter the customer',
'service_date' => 'Please select the service date',
'labour_hrs' => 'Please enter a valid number',
'hourly_rate' => 'Please enter a valid number',
]);
} else {
$this->validate($request,
[
'customer_id' => 'required',
'service_date' => 'required',
'labour_hrs' => 'numeric|nullable',
'hourly_rate' => 'sometimes|required_with:labour_hrs',
'travel_km' => 'numeric|nullable',
'travel_rate' => 'sometimes|required_with:travel_km'
],
[
'customer_id' => 'Please enter the customer',
'service_date' => 'Please select the service date',
'labour_hrs' => 'Please enter a valid number',
'hourly_rate' => 'Please enter a valid number',
'travel_rate' => 'Please enter a valid number',
'travel_km' => 'Please enter a valid number'
]);
}
还有别的办法解决这个问题吗?我有这个问题,如果少数情况下,我不想更通用的解决方案
我查看了自定义验证,但不明白如何检查行程是否为空
Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
return is_numeric($value) && $parameter ????;
});
谢谢如果如下所示,请尝试使用
必需\u
'travel_km' => 'numeric|nullable',
'travel_rate' => 'sometimes|required_if:travel_km'
这将仅在存在行程公里且非空时验证行程率。在这里,
允许您将行驶公里数设置为空
当travel\u km
不为空且travel\u rate
为空时,它将显示错误,但当travel\u km
为空值时,不会显示错误。
希望这有帮助
更新:nullable
验证不适用于数值
它可以通过应用以下条件规则来实现
if( !empty(Input::get('travel_km')) ){
$rules['travel_km'] = 'numeric';
}
谢谢,但它给出了相同的结果,即使travel_km为空,仍然会得到一个错误:“travel_rate”=>“有时是数字的,如果:travle_km,true”我想补充一点,我用谷歌搜索了它,数字规则似乎不能为空,因为空不是数字,这就是问题所在。这就是我需要定制的原因validation@SigalZahavi对。我也更新了我的答案。继续编码!