2016-08-21 161 views
2

我最初有字段first_name,last_name,password,email作爲我註冊表單中的字段。我需要添加註冊爲業務的選項。Laravel 5.2條件驗證

我最初的驗證規則:

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'first_name' => 'required|max:255', 
     'last_name' => 'required|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|min:6|confirmed', 
    ]); 
} 

我需要添加一個business_name場。我需要驗證是:

first_namelast_name是必需的xor business_name是必需的。

如何在Laravel 5.2中執行此操作?我正在查看sometimes規則 - 但我不確定是否應該這樣做。

編輯:

我想這幾乎可以實現通過:

protected function validator(array $data) 
{ 
    return Validator::make($data, [ 
     'first_name' => 'sometimes|max:255', 
     'last_name' => 'sometimes|max:255', 
     'business_name'=>'sometimes|max:255', 
     'email' => 'required|email|max:255|unique:users', 
     'password' => 'required|min:6|confirmed', 
    ]); 
} 

雖然從我的sometimes規則的理解,它只會如果該鍵存在輸入數組中,因此驗證first_name可能存在,並且last_name可能不存在,這仍然會驗證爲「通過」。這不是我想要的行爲。

回答

3

什麼,你可能會尋找的是required_without:foo,bar,...

這個檢驗規則說「下驗證的字段必須存在,並且不爲空,只有當其他任何指定的字段不存在」。

所以你可能有business_name => required_without:first_name,last_name

+0

完美!我完全錯過了文檔。感謝你的回答。附:如果我得到代表,我會贊成。乾杯,Chris – 1221312

+0

太棒了。很高興幫助。 –