validation - Laravel 验证可为空或数字
问题描述
我正在使用 Laravel 5.4。
我的表单中有两个字段:travel_km 和 travel_rate
- 两个字段都必须是数字
- 这两个字段都是可选的,但是如果 travel_km 不为空,则必须输入 travel_rate
我的规则:'travel_km' => 'numeric|nullable', 'travel_rate' => 'sometimes|required_with:travel_km'
问题是如果 travel_km 为空,我仍然会在 travel_rate 上收到错误,因为它为空。
如果我在 travel_rate 上设置 nullable,即使 travel_km 不为空,我也不会收到错误消息。
为了解决这个问题,我在我的控制器中做了这个:
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'
]);
}
有没有其他方法可以解决这个问题?如果有少数情况,我有这个问题,我不想更通用的解决方案。
我查看了自定义验证,但不明白如何检查 travel_km 是否为空。
Validator::extend('foo', function ($attribute, $value, $parameters, $validator) {
return is_numeric($value) && $parameter ????;
});
谢谢
解决方案
尝试使用required_if
如下
'travel_km' => 'numeric|nullable',
'travel_rate' => 'sometimes|required_if:travel_km'
仅当 travel_km 存在且非空时,这将验证 travel_rate。在这里,允许您在不为空且为空travel_km
时输入 null ,它会显示错误,但当有 null 值时不会显示错误。希望这可以帮助。travel_km
travel_rate
travel_km
更新:nullable
验证不适用于数值。
可以通过应用以下条件规则来完成,
if( !empty(Input::get('travel_km')) ){
$rules['travel_km'] = 'numeric';
}
推荐阅读
- python - 如何使用wasd移动对象
- typescript - 从函数的返回结果中提取类型信息
- javascript - 如何使用异步?
- eclipse - 有没有办法添加一个快捷方式来安装我的 Maven 项目?
- python - 无效参数:indices[207,1] = 1611 不在 [0, 240) - Tensorflow 2.x (Python)
- rust - Rust Rocket 不匹配的类型
- python - 通过匹配行值从 Pandas 数据框中制作边缘列表并放入边缘列表
- mips - MIPS 中的动态分配数组
- python - 根据熊猫中的条件添加价值
- ruby-on-rails - 使用 Graphql for Shopify API 时的动态常量分配