РЕДАКТИРОВАТЬ 1: Рассмотрим ответ Marcin's Nabiałek также!Токен Csrf отсутствует ..
Чтобы понять, что происходит, и узнать, проверить входные данные, полученные из запросов, прежде чем вносить какие-либо изменения.Добавьте команду dd($request->all());
в первую строку функции preferences()
, чтобы увидеть, что inputs
содержит $request
.
Есть две проблемы.
1) HTML.Поскольку у вас есть
<input type='checkbox'>
Вам не нужны скрытые типы:
<input type='hidden'>
Например, вместо:
<input type='hidden' name='newsletter' value='0'>
<input type="checkbox" name="newsletter" value="1"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Novinky
Измените его на ( без типа ввода, поскольку он не нужен ):
<input type="checkbox" name="newsletter" value="1"><span class="cr"><i class="cr-icon fa fa-check"></i></span>Novinky
2) Во-вторых, контроллер проверяет значение on
но значение, установленное для этого флажка, равно 1
, поэтому его следует изменить на:
$preference->newsletter = Input::get('newsletter') == 1 ? 1 : 0;
* Если значение флажка не установлено, но пользователь установил флажок, то да, он вернетзначение on
Дополнительная информация о case (1):
У вас не должно быть двух элементов с одинаковым name
.Фактическая проблема заключается в том, что вы проверяете значение on
, но входные данные имеют значение 1
.Даже если элемент с одинаковым именем существует дважды, запрос будет перезаписан последним (в вашем случае он перезаписывается флажком типа ввода).Однако в вашем случае скрытый тип ввода (ов) должен быть удален.