2013-11-23 52 views
16

我想看看是否選中了複選框或不在我的控制器中。我讀過這是要做的代碼Laravel 4,如何測試複選框是否被選中?

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

但是,即使取消選中該複選框,它也會返回true。

+2

'輸入::得到( 'attending_lan',虛假)'會的工作,或者'輸入::得到( 'attending_lan', '0')' – Mei

回答

14

假設你已經在你看來這種形式的代碼:

// 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),然後在控制器中檢查該值。

+0

謝謝合作完美。 –

+1

還應該注意的是,如果attending_lan未被選中,您將不會收到錯誤。這與標準的PHP不同,如果你查詢一個unchecked attending_lan,你會得到變量not found。 – Puzbie

27

使用Input::has('attending_lan')

一般來說,如果該複選框被選中,請求變量會存在。如果情況並非如此,那麼代碼中的其他地方就有問題。

也初步認識:Does <input type="checkbox" /> only post data if it's checked?

+3

這是最好的方法 –

+0

這解決了我在登錄時使用Laravel'remember_me'的問題。 –

+0

完美的解決方案 – garrettendi

-2

另一種方法是檢查數組關鍵看它是否存在,因爲如果沒有選中的輸入::獲得(「密鑰」)可能會給你的問題給出了一個未定義的指數在輸入數組中。

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

或..類似的東西。我有點sl but,但我希望它能幫助別人。

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

FILTER_VALIDATE_BOOLEAN過濾器將值驗證爲布爾選項。

可能的返回值:

  • 返回TRUE爲 「1」, 「真實」, 「開」 和 「是」,和大寫版本。
  • 對於「0」,「false」,「off」和「no」,和大寫版本返回FALSE。
  • 否則返回NULL。

來源:http://www.w3schools.com/php/filter_validate_boolean.asp

相關問題