Laravel 4, как проверить, установлен ли флажок?
Я пытаюсь проверить, установлен ли флажок в моем контроллере. Я прочитал, что это код для этого.
if (Input::get('attending_lan', true))
Но это возвращает true, даже если флажок снят.
Ответы
Ответ 1
Предполагая, что у вас есть этот код формы в вашем представлении:
// 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
), а затем проверить это значение в вашем контроллере.
Ответ 2
Используйте Input::has('attending_lan')
Вообще говоря, если флажок установлен, переменная запроса будет существовать. Если это не так, у вас есть проблема где-то еще в коде.
Также relavant: Есть ли < input type = "checkbox" / > отправлять только данные, если они отмечены?
Ответ 3
if(filter_var(Input::get('attending_lan'), FILTER_VALIDATE_BOOLEAN)){
Фильтр FILTER_VALIDATE_BOOLEAN проверяет значение как логическую опцию.
Возможные значения возврата:
- Возвращает TRUE для "1", "true", "on" и "yes", и в верхнем регистре.
- Возвращает FALSE для опций "0", "false", "off" и "no", и в верхнем регистре.
- В противном случае возвращает NULL.
источник: http://www.w3schools.com/php/filter_validate_boolean.asp
Ответ 4
Альтернативой является проверка ключа массива, чтобы узнать, существует ли он, учитывая, что если не проверено, Input:: get ( "ключ" ) может дать вам проблемы, учитывая его индекс undefined в массиве ввода.
$input = Input::all();
if(array_key_exists($input('key',$input)){
// Checked
}else{
// Not Checked
}
Или что-то в этом роде. Я немного неряшлив, но надеюсь, что это может помочь кому-то.