4

当我取消选中一个复选框并且验证失败时,我希望该复选框保持未选中状态,而是选中它。

我的复选框:

<input type="checkbox" name="member"
  {{ ($mode == 'edit' && $user->member == 1) ? 'checked' : '' }}
  {{ (old('member') == 'on') ? 'checked' : '' }} />

$mode == 'edit'当我编辑表单然后填充表单字段时,从控制器传递到哪里来识别案例。

似乎当未选中复选框时,相对old()不存在。

我在 Stack 上尝试了很多解决方案,但没有一个有效。注意:我使用的是 Laravel 5.6

4

2 回答 2

3

我通过测试old('_token')(CSRF 令牌)的存在解决了这个问题,如下所示:

<input type="checkbox" name="member" 
@if ((!old('_token') &&  $mode == 'edit' && $user->member == 1) || (old('member') == 'on'))
  checked
@endif />
于 2019-05-22T17:03:58.523 回答
0

将其更改为

<input type="checkbox" name="member" {{ (($mode == 'edit' && $user->member == 1) || old('member')) ? 'checked' : null }} />
于 2018-02-27T08:55:56.167 回答