Intereting Posts
PHP с использованием mcrypt и хранения зашифрованных в MySQL принудительная загрузка файла с помощью php выберите все данные с одним и тем же ключом foriegn <input type = "time" /> значение не вставляется в mysql db Командная строка php mysqli терпит неудачу, но работает через веб-сервер и работает в локальной PHPStorm: правильный PHPDoc для коллекции объектов? Вычисление корней с помощью bc_math или GMP Белое пространство появляется ниже липкого нижнего колонтитула, только в PHP Объединить массив в соответствии со значениями столбцов соответствия в PHP Что такое метод проверки пользовательского вентилятора страницы в API GRAPH? PDO связывает n раз такое же значение с foreach PHP: как вызвать функцию дочернего класса из родительского класса Преобразование шестнадцатеричного кода в читаемую строку в PHP Лучший подход к расширению полей из валидатора Есть ли в Perl динамические переменные типа PHP?

Форма привязки формы для флажков

Я использую Laravel 4.1 и в своем приложении мне нужно показать форму с предварительно заполненными флажками. Но я пытаюсь сделать это с помощью Form Model Binding, это не сработает.

{{ Form::model($user, array('route' => 'settings-notify')) }} <div class="formRow form-horizontal_row"> {{ Form::checkbox('notify_visit', '1') }} </div> <div class="formRow form-horizontal_row"> {{ Form::checkbox('notify_rate', '1') }} </div> <div class="formSubmit"> {{ Form::submit('Save') }} </div> {{ Form::close() }} 

Есть ли способ заставить его работать?

Отлично работает для меня, вот тест, который я только что сделал здесь:

 Route::get('test', function() { $user = User::where('email','myemail@domain.com')->first(); Form::model($user); $user->notify_rate = true; echo e(Form::checkbox('notify_rate')); $user->notify_rate = false; echo e(Form::checkbox('notify_rate')); }); 

Это то, что я получил:

 <input checked="checked" name="notify_rate" type="checkbox" value="1"> <input name="notify_rate" type="checkbox" value="1"> 

Я закончил работу с этим в своем контроллере, потому что, как пишет @Ladislav Maxa в своем комментарии к @Antonio Carlos Ribeiro, база данных никогда не обновляется. Это связано с тем, что пустые флажки не отправляются с формой, поэтому для обновления базы данных не доступно значение «unchecked».

Решение, которое я использовал, – проверить наличие поля в объекте get. Если он установлен, флажок был проверен.

 $notify_rate = Input::get('notify_rate') ? 1 : 0; $data['notify_rate'] = $notify_rate; 

Другим способом, который я сделал это раньше, было создание текстового ввода с тем же именем и значением 0 перед этим флажком. Если флажок отключен, вводится текстовое входное значение, если флажок установлен, используется значение.

 <input name="notify_rate" type="text" value="0"> <input name="notify_rate" type="checkbox" value="1"> 

Вероятно, это неверный HTML, и я предпочитаю иметь дело с этой серверной стороной.