2013-11-23 10 views
16

コントローラでチェックボックスがオンになっているかどうかを確認しようとしています。私はこれを行うコードだと読んだLaravel 4、チェックボックスをオンにした場合のテスト方法

if (Input::get('attending_lan', true)) 

しかし、チェックボックスをオフにしてもtrueを返します。あなたはこのようなチェックボックスの値を取得することができます

// view.blade.php 
{{ Form::open() }} 
    {{ Form::checkbox('attending_lan', 'yes') }} 
    {{ Form::submit('Send') }} 
{{ Form::close() }} 

+2

'入力::( 'attending_lan'、false)の'仕事、または 'インプットうを取得::取得( 'attending_lan'、 '0')' – Mei

答えて

14

あなたのビューでこのフォームのコードを持っていると仮定すると

if (Input::get('attending_lan') === 'yes') { 
    // checked 
} else { 
    // unchecked 
} 
ここで重要なのは、あなたが値を設定する必要がある

あなたのビュー(例では、値はyes)にチェックボックスを作成し、コントローラ内のその値を確認します。チェックボックスがチェックされている場合

+0

が働いて、ありがとう完全に。 –

+1

attending_lanがチェックされていないと、エラーは発生しません。これは標準のPHPとは異なり、未チェックのattending_lanをクエリすると変数が見つかりません。 – Puzbie

27

Input::has('attending_lan')

使用一般的に言って、リクエスト変数が存在します。そうでない場合は、コードのどこかに問題があります。また

relavant:Does <input type="checkbox" /> only post data if it's checked?

+3

これは最善の方法です –

+0

これは、ログイン時にLaravel 'remember_me'の問題を修正しました。 –

+0

完璧なソリューション – garrettendi

-2

は、代替はあなたにその未定義のインデックス与えられた問題を与えるかもしれない入力をチェックしていないとき::(「キー」)を得ることを考えると、それが存在するかどうかを確認するために配列のキーをチェックすることですInput配列に格納されます。

$input = Input::all(); 
if(array_key_exists($input('key',$input)){ 
// Checked 
}else{ 
// Not Checked 
} 

などです。私は少しばかげていますが、誰かを助けることができれば幸いです。

-1
if(filter_var(Input::get('attending_lan'), FILTER_VALIDATE_BOOLEAN)){ 

FILTER_VALIDATE_BOOLEANフィルタは、ブールオプションとして値を検証します。

可能な戻り値:

  • "1" のためTRUEを返し、 "真"、および "はい" "上"、と大文字のバージョン。
  • "0"、 "false"、 "off"および "no"の場合はFALSE、および大文字のバージョンを返します。
  • そうでない場合はNULLを返します。

ソース:http://www.w3schools.com/php/filter_validate_boolean.asp

関連する問題