Laravel刀片-如果验证失败,是否重新填充复选框?

Laravel刀片-如果验证失败,是否重新填充复选框?,laravel,laravel-5,laravel-blade,Laravel,Laravel 5,Laravel Blade,如果验证表单请求失败,但如果用户未提交表单,则使用数据库中的默认值,如何重新填充复选框 假设我们有名称输入字段和复选框 输入名称 <input type="text" name="name" value="{{ old('name', $delivery->name) }}"> 复选框: <input type="checkbox" name="use_shipping" @if(old('use_shipping', $delivery->use_ship

如果验证表单请求失败,但如果用户未提交表单,则使用数据库中的默认值,如何重新填充复选框

假设我们有名称输入字段和复选框

输入名称

<input type="text" name="name" value="{{ old('name', $delivery->name) }}">

复选框:

<input type="checkbox" name="use_shipping"  @if(old('use_shipping', $delivery->use_shipping) == "1") checked="checked" @endif value="1">
use_shipping)==“1”)checked=“checked”@endif value=“1”>
输入名称字段可以通过数据库重新填充值,或者在验证请求失败时重新填充值

如果验证失败,复选框不会重新填充。如何解决这个问题

例如,如果我没有输入名称(输入字段),并且未选中“使用装运”复选框,则在提交表单后应重新填充复选框(验证失败)。

尝试以下操作:

<input type="checkbox" name="use_shipping" @if(old('use_shipping') || (old('use_shipping', null) == null && $delivery->use_shipping)) checked @endif value="{{ old('use_shipping') || (old('use_shipping', null) == null && $delivery->use_shipping)) }}">
use_shipping])选中@endif value=“{{old('use_shipping')||(old('use_shipping',null)==null&&$delivery->use_shipping”)}>

*使用shipping应该是一个布尔值

这应该可以实现以下功能:


使用(运输)"选中“:”}}/>

之所以会发生这种情况,是因为浏览器不会在post数据中附加非选中复选框,因此在重新填充表单时会使用
$delivery->use\u shipping
的值

您可以添加“默认”值为
use\u shipping
的隐藏输入来修复此行为:

<input type="hidden" name="use_shipping" value="0">
<input type="checkbox" name="use_shipping" value="1" {{ old('use_shipping', $delivery->use_shipping) ? 'checked="checked"' : '' }}>

使用(运输)"checked=“checked”:“”}>

选中复选框时,这将正常工作,因为后者的值会覆盖前者。

额外的双引号(“)是什么在
值之后
attribute@Michel哎呀。我已经编辑了这个问题。问题仍然存在。我认为这不起作用-
选中的
不接受值。它要么存在要么不存在。这不起作用。如果表单尚未提交,我们需要通过
$delivery->use\u shipping
默认选中或不选中。如果表单已提交en提交并验证失败。它需要通过
old()
重新填充它。如果验证失败,它不会重新填充复选框。如果验证失败,它将从数据库而不是
old
值重新填充。