2014-06-25 127 views
0

讀取一個複選框值。這是我的HTML刀片代碼laravel在控制器

{{Form::checkbox('remember_me', '', array('id'=>'remember_id'))}} 
     <label for="remember_id">Remember me</label> 

這是我控制器代碼:

echo Input::get('remember_me');exit; 
  1. 結果總是空的,告訴我爲什麼?

  2. 當我運行該頁面時,該複選框始終會被選中,請問爲什麼?

感謝

回答

5

請有Form::checkbox()的[參數列表上看看方法] [1]。

第二個參數是您的複選框值。您手動將其設置爲空字符串。將其設置爲null以保持瀏覽器默認值(laravel默認值爲1)。第三個參數是一個布爾值。將其設置爲true以選中該框,並將其設置爲false以取消選中。

第四個參數是您的選項數組,您可以在其中指定您的ID。所以,正確的方法調用應該是:

{{Form::checkbox('remember_me', null, false, array('id'=>'remember_id'))}} 

更新:

未選中的複選框,將不包含在您的POST數據。因此,驗證複選框已被選中的唯一可靠方法是檢查它是否已設置。這可以使用isset()使用常規的PHP函數,或者如果使用laravel,通過使用Input::has(),它返回一個布爾值,取決於您的輸入數據是否包含給定的鍵。

+0

在應用您的代碼時,複選框變爲未選中狀態,這很好,但是當複選框未選中時,控制器不會打印任何內容,被檢查 –

+1

未被選中的複選框將不會通過POST發送,這就是爲什麼當它沒有被選中時你會得到'null',並且你不能改變這種行爲。這意味着您首先需要檢查複選框是否有值,然後檢查值。 當您選中該框時,不應打印'null'。你確定你沒有在字符串文字中加入null嗎? – thpl

+0

當我刪除了字符串文字arround null,我勾選了複選框時,並沒有檢查時沒有任何東西。所以你的意思是我只需要檢查表單是否有復​​選框名稱。否則,複選框將不會被檢查,對吧? –

1

你沒有一個值添加到複選框

{{Form::checkbox('remember_me', 'value goes here', true, array('id'=>'remember_id'))}} 

第二個參數是價值

+0

我已經試圖把'FALSE'第二值,但仍復選框被選中,並沒有在控制器 –

+0

印刷編輯我的回答,忘了第三個參數是選中狀態,立刻嘗試 –

+0

當該複選框未被選中時,控制器不打印任何內容,並且當該複選框被選中時,控制器打印「值在此處」。我需要的是'true/false'或'on/of' –

1

通常我會寫入沒有刀片的複選框,我可以隨意使用它,就像普通的HTML一樣。我不明白爲什麼你可以用普通的HTML方式來做到這一點,因爲它總是以你熟練的方式做同樣的事情。

+0

+1您的回答,我選擇blade over html,因爲我需要在頁面重定向時保存複選框值,以防身份驗證落入 –

+0

實際上,您可以執行此操作使用正常的複選框,刀片與此無關,第二,也沒有進攻,刀片爲您生成一個複選框,它可以幫助您生成更清晰的html。 –

0
{!! Form::label('Test-2') !!} {!! Form::checkbox('ch[]', 'value-2', false); !!}