2016-12-17 80 views
1

我使用laravel 5.3,這是我的片斷的視圖代碼:laravel驗證無線電陣列

<tr> 
     <td> 
      <label class="radio-inline"> 
      <input name="val[1]" type="radio" value="1" >Rate 1</label> 
      <label class="radio-inline"> 
      <input name="val[1]" type="radio" value="2" >Rate 2</label> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <label class="radio-inline"> 
      <input name="val[2]" type="radio" value="1" >Rate 1</label> 
      <label class="radio-inline"> 
      <input name="val[2]" type="radio" value="2" >Rate 2</label> 
     </td> 
    </tr> 

和此我在控制器驗證:

$rules = array(
    'val[]' => 'required|in:1,2,3,4,5', 
); 

$validator = Validator::make(Input::all(), $rules); 

如果我檢查所有無線電和提交表單,誤差出現此消息:val []字段是必需的。

如何驗證無線電陣列?

更新該解決方案

<tr> 
     <td> 
      <label class="radio-inline"> 
      <input name="val[1]" type="radio" value="1" required="true" >Rate 1</label> 
      <label class="radio-inline"> 
      <input name="val[1]" type="radio" value="2" required="true" >Rate 2</label> 
     </td> 
    </tr> 
    <tr> 
     <td> 
      <label class="radio-inline"> 
      <input name="val[2]" type="radio" value="1" required="true" >Rate 1</label> 
      <label class="radio-inline"> 
      <input name="val[2]" type="radio" value="2" required="true" >Rate 2</label> 
     </td> 
    </tr> 

謝來應答者這個問題

回答

1

,您可以嘗試如下:

$rules = array(
    'val' => 'required|array', 
    'val.*' => 'required|in:1,2,3,4,5', 
); 
+0

如果我使用'val。*'=>'required | in:1,2,3,4,5',當單選按鈕沒有選中時,它沒有驗證,它的通過條件 – sahmada

+0

感謝您的更新,現在,如果我只檢查一個收音機,它的通過條件 – sahmada

+0

因爲如果一個單選按鈕沒有被選中,它就不會被傳遞給服務器。您必須確保數據傳遞給服務器。可以有兩種解決方法 - 一種是使用HTML的「required」屬性或默認選中單選按鈕。 –

1

只要做到這一點是這樣的:

$rules = array(
    'val' => 'required|array', 
    'val.*' => 'required|in:1,2,3,4,5', 
); 

$validator = Validator::make(Input::all(), $rules); 

希望這有助於!

+0

我將我的代碼更改爲您的建議代碼,但不起作用,它沒有驗證,如果我不檢查所有電臺 – sahmada

+0

謝謝你的更新,你的建議的結果,,如果我檢查一個電臺它的通過條件 – sahmada

+0

@sahmada - 這是否正確適合你! –