以下代码在视图中:
<input maxlength="2" value="{{ old('discount') }}"
class="form-control" type="text"
id="product-discount-in-adding-products"
name="discount">
这是我在控制器中的代码:
if($request->has('discount')){
$product->discount = $request->discount;
}else{
$product->discount = 0;
}
当我通过邮寄方式发送表单时,我在数据库中的折扣字段将为空。
答案 0 :(得分:3)
在Laravel 5.5中,请求对象上的has
方法仅告诉您该字段是否实际存在于请求中,而不是它是否具有值。因此,如果您在表单中为discount
提交空值,则首先检查if($request->has('discount')){
即可。
现在,Laravel还有中间件来修剪字符串并将空字符串转换为null,因此如果您在discount
字段中提交空值,那么您将$product->discount
设置为{{1 }}
检查表单是否包含指定输入的值的方法是使用null
方法:
filled
这应该会停止评估为if ($request->filled('discount')) {
$product->discount = $request->discount;
} else {
$product->discount = 0;
}
的第一次检查,并将true
设置为$product->discount
。
请参阅标有确定输入值是否存在标题下的文档here。