如果验证表单请求失败但如果用户没有提交表单,那么如何重新填充复选框,然后使用数据库中的默认值?
假设我们有名称输入字段和复选框。
输入名称
<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
复选框 - 它应该在提交表单后重新填充复选框(验证失败)。
答案 0 :(得分:4)
这种情况会发生,因为浏览器不会在帖子数据中附加未选中的复选框,因此在重新填充表单时会使用$delivery->use_shipping
的值。
您可以使用&#34;默认&#34;添加隐藏输入。 use_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"' : '' }}>
当选中复选框时,这将正常工作,因为后面的值会覆盖前者。
答案 1 :(得分:0)
这应该可以解决问题:
<input name="use_shipping" type="checkbox" value="1" {{ old('use_shipping', $delivery->use_shipping) ? 'checked' : '' }} />
答案 2 :(得分:-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)) }}">
*使用送货应该是布尔值