Флажок лезвия Laravel
Я хочу установить состояние флажков из базы данных, поэтому я пишу,
{{ Form::checkbox('asap',null,$offer->asap) }}
Но если я хочу установить идентификатор в флажок, например
{{ Form::checkbox('asap',null,$offer->ASAP, array('id'=>'asap')) }}
Он всегда устанавливал для моего состояния флажка значение true. (прежде чем пользователь выберет его)
Итак, вопрос, как установить идентификатор в флажках блейда, когда состояние флажка установлено до того, как пользователь его выберет?
4 answers
3-й аргумент решает, установлен флажок или нет. Так что, вероятно, $offer->ASAP
(или $offer->asap
истинно (или не ложно или не равно нулю). Если вы хотите снять флажок, либо установите для него значение false, либо не используйте 3-й аргумент (установите значение в значение null или false):
{{ Form::checkbox('asap',null,null, array('id'=>'asap')) }}
РЕДАКТИРОВАТЬ
Другая возможность заключается в том, что у вас на странице есть пользовательский код JavaScript, который находит элемент по идентификатору asap
и устанавливает этот флажок. Поэтому, когда вы не устанавливаете идентификатор, JavaScript не может его проверить, но когда вы установите этот идентификатор, флажок будет установлен с помощью JavaScript.
Я знаю, что на этот вопрос уже был дан ответ, в этом я собираюсь шаг за шагом объяснить, как реализовать флажки с помощью Laravel/blade в разных случаях...
Итак, чтобы загрузить ваши флажки из базы данных или проверить, установлен ли флажок:
Во-первых из всего, что вам нужно понять, как это работает, как упоминал @итачи:
{{Форма::флажок (1-й аргумент, 2-й аргумент, 3-й аргумент, 4-й аргумент) }}
- Первый аргумент: имя
- Второй аргумент: значение
- Третий аргумент: проверено или не проверено это принимает: истина или ложь
- Четвертый аргумент: дополнительные атрибуты (например, флажок css-класс)
Пример :
{{ Form::checkbox('admin') }}
//will produces the following HTML
<input name="admin" type="checkbox" value="1">
{{ Form::checkbox('admin', 'yes', true) }}
//will produces the following HTML
<input checked="checked" name="admin" type="checkbox" value="yes">
Как получить значения флажков? (в вашем контроллере)
Метод 1 :
public function store(UserCreateRequest $request)
{
$my_checkbox_value = $request['admin'];
if($my_checkbox_value === 'yes')
//checked
else
//unchecked
...
}
Метод 2 :
if (Input::get('admin') === 'yes') {
// checked
} else {
// unchecked
}
Примечание: вам необходимо назначить значение по умолчанию для непроверенного поля:
if(!$request->has('admin'))
{
$request->merge(['admin' => 0]);
}
Это здорово, правда? но как мы могли бы установить флажки в нашем представлении?
Для хорошей практики я предлагаю использовать
Form::model
при создании формы это автоматически заполнит входные значения с теми же именами, что и у модели (а также с использованием другой формы блейда::входные данные..)
{!! Form::model( $user, ['route' => ['user.update', $user->id], 'method' => 'put' ]) !!}
{!! Form::checkbox('admin', 1, null) !!}
{!! Form::close() !!}
Вы также можете получить его следующим образом:
{{ Form::checkbox('admin',null, $user->admin) }}
Хорошо, теперь как поступить с помощью:
- флажки для кратных значений
- Добавить класс css
- Добавить идентификатор флажка
- Добавить метку
Допустим, мы хотим получить рабочие дни из нашей базы данных
$working_days = array( 0 => 'Mon', 1 => 'Tue', 2 => 'Wed',
3 => 'Thu', 4 => 'Fri', 5 => 'Sat', 6 => 'Sun' );
@foreach ( $working_days as $i => $working_day )
{!! Form::checkbox( 'working_days[]',
$working_day,
!in_array($working_days[$i],$saved_working_days),
['class' => 'md-check', 'id' => $working_day]
) !!}
{!! Form::label($working_day, $working_day) !!}
@endforeach
//$saved_working_days is an array of days (have 7 days, checked & unchecked)
Я потратил некоторое время, чтобы понять, как работать с несколькими флажками, я надеюсь, что это может кому-то помочь:)
В FormBuilder.php
public function checkbox($name, $value = 1, $checked = null, $options = array())
{
return $this->checkable('checkbox', $name, $value, $checked, $options);
}
- 1-й параметр: имя
- 2-й: значение
- 3-й: проверено или нет (т.е. ноль, ложь или истина)
- 4-е: атрибуты.
{{ Form::checkbox('asap',null,$offer->ASAP, array('id'=>'asap')) }}
Ваш заказ неверен.
Так и должно быть,
{{ Form::checkbox('asap',$offer->ASAP, null, array('id'=>'asap')) }}
Удачи!
<div class="togglebutton">
<label>
@if ($programmer->play === 1)
<input type="checkbox" name="play" checked="">
@else
<input type="checkbox" name="play" {{ old('play') ? 'checked' : '' }} >
@endif
Play
</label>
</div>