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), а затем проверить это значение в вашем контроллере.

Ответ 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
}

Или что-то в этом роде. Я немного неряшлив, но надеюсь, что это может помочь кому-то.