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
值重新填充。