Laravel 4, как проверить, установлен ли флажок?
Я пытаюсь проверить, установлен ли флажок в моем контроллере или нет. Я читал, что это код для этого
if (Input::get('attending_lan', true))
Но это возвращает значение true, даже если флажок снят.
4 answers
Предполагая, что у вас есть этот код формы в вашем представлении:
// view.blade.php
{{ Form::open() }}
{{ Form::checkbox('attending_lan', 'yes') }}
{{ Form::submit('Send') }}
{{ Form::close() }}
Вы можете получить значение флажка следующим образом:
if (Input::get('attending_lan') === 'yes') {
// checked
} else {
// unchecked
}
Ключ здесь в том, что вам нужно установить значение при создании флажка в вашем представлении (в примере значение будет yes
), а затем проверить это значение в вашем контроллере.
Использовать Input::has('attending_lan')
Вообще говоря, если флажок установлен, переменная запроса будет существовать. Если это не так, у вас проблема где-то в другом месте кода.
Также релевантно: публикует данные только в том случае, если он отмечен?
if(filter_var(Input::get('attending_lan'), FILTER_VALIDATE_BOOLEAN)){
Фильтр FILTER_VALIDATE_BOOLEAN проверяет значение как логический параметр.
Возможные возвращаемые значения:
- Возвращает значение TRUE для "1", "true", "включено" и "да", и версий в верхнем регистре.
- Возвращает значение FALSE для "0", "ложь", "выключено" и "нет", и версий в верхнем регистре.
- В противном случае возвращает значение NULL.
Источник: http://www.w3schools.com/php/filter_validate_boolean.asp
Альтернативой является проверка ключа массива, чтобы увидеть, существует ли он, учитывая, что, если он не проверен, Input::get('ключ') может вызвать проблемы, учитывая его неопределенный индекс во входном массиве.
$input = Input::all();
if(array_key_exists($input('key',$input)){
// Checked
}else{
// Not Checked
}
Или.. что-то в этом роде. Я немного неаккуратен, но надеюсь, что это может кому-то помочь.