2015-10-02 31 views
1

我有一個窗體,有一些條件邏輯,顯示或隱藏每個字段。我只想驗證顯示的字段。在下面的驗證腳本中查看字段列表,並想象我在視圖中使用條件邏輯來隱藏「phone」表單字段 - 我仍然想驗證其餘字段,但是如果「電話」驗證仍然存在,腳本失敗並顯示錯誤消息,說「電話號碼是必需的。」檢查表單字段是否存在做表單驗證時? Laravel 5

在Laravel 5中,有沒有辦法檢查表單字段是否存在,或在驗證表單之前動態更改它是否需要動態更改?

這裏是我的驗證代碼...

 $v = Validator::make(input()->all(), [ 
      'firstName' => 'required|Min:1|Max:80', 
      'lastName' => 'required|Min:1|Max:80', 
      'address' => 'required|Min:10|Max:80', 
      'address2' => 'Max:20', 
      'city' => 'required|Min:2|Max:80', 
      'state' => 'required|Min:2|Max:80', 
      'zip' => 'required|Min:5', 
      'phone' => 'required|regex:'.validPhoneRegex(), 
     ]); 
     if($v->fails()) 
     { 
      return redirect()->back()->withErrors($v)->withInput(input()->all()); 
     } 

回答

1

下面的驗證規則應該做的工作:

'phone' => 'sometimes|regex:'.validPhoneRegex(), 
+0

這是一個非常簡單的方法來做到這一點,我看到了它的文檔中,但由於某種原因誤讀沒不認爲它會工作 – Drown

+0

輝煌!這正是我需要的。謝謝。 –

+0

順便說一句,我的代表還不夠高,否則我的投票將顯示:)再次感謝! –

1

可以使用sometimes()方法爲:

$v->sometimes('phone', 'required', function($input) { 
    //Your condition here, the "required" validation on the "phone" field will 
     only run if this returns true 
}); 

然後,您可以從您的初始確認刪除phone

從文檔:

注:傳遞給你的閉幕$輸入參數將照亮的\ Support \流利的實例,可用於訪問輸入和文件。

查看文檔here