Laravel: обработка неотмеченного флажка с помощью old()

Когда я снимаю флажок и проверка не проходит, я ожидаю, что флажок останется снятым, вместо этого он установлен.

Мой флажок:

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

Где $mode == 'edit' передается от контроллера для определения случая, когда я редактирую форму, а затем для заполнения полей формы.

Кажется, что когда флажок снят, относительный old() не существует.

Я пробовал много решений здесь, в стеке, но ни одно из них не работает. Примечание: я использую Laravel 5.6.


person Fred K    schedule 27.02.2018    source источник


Ответы (2)


Я решил это, проверив существование old('_token') (токен CSRF) следующим образом:

<input type="checkbox" name="member" 
@if ((!old('_token') &&  $mode == 'edit' && $user->member == 1) || (old('member') == 'on'))
  checked
@endif />
person Toby Beresford    schedule 22.05.2019

Измените его на

<input type="checkbox" name="member" {{ (($mode == 'edit' && $user->member == 1) || old('member')) ? 'checked' : null }} />
person Prince Lionel N'zi    schedule 27.02.2018
comment
Привет Jeune, пытался, но это не работает, но, может быть, это может быть по другому поводу. Пожалуйста, проверьте обновленный код в моем первом сообщении. - person Fred K; 27.02.2018
comment
Извините, пока не работает. Кажется, что когда флажок не установлен, относительный old() не существует. - person Fred K; 27.02.2018