2017-06-16 40 views
0

我在窗體上有一堆輸入,並且所考慮的字段有各種驗證要求。爲了簡化,我創建了一個類比:如何創建所需的字段Laravel驗證?

我有輸入A,B,C和D.A,B和C都是數組輸入。如果存在B和C,則應該需要'A',但是如果即使存在B和C,輸入'D'的值爲1,也不需要'A'。輸入'B'和'C'的要求相同。

我最初的猜測是:A. * =>'required_with:B。 ,C. | required_if:D,0' 但這並不實際。

我很自定義驗證,所以如果需要一個自定義驗證器的分步方法,你能提供一個完整的代碼嗎?

謝謝!

回答

0

據記載在https://laravel.com/docs/5.4/validation#conditionally-adding-rules

驗證時請出示

在某些情況下,你可能希望對現場運行驗證檢查只有在該領域存在輸入數組英寸爲了快速實現這一點,加上有時裁定您的規則列表:

$v = Validator::make($data, [ 
    'email' => 'sometimes|required|email', 
]); 

在上面的例子中,電子郵件字段將僅在其存在於$數據數組中進行驗證。

複雜的條件驗證

有時你可能希望增加基於更復雜的條件邏輯驗證規則。例如,只有當另一個字段的值大於100時,您纔可能希望要求給定的字段。或者,只有當另一個字段存在時,您可能需要兩個字段才具有給定值。添加這些驗證規則不一定非常痛苦。首先,用您的靜態規則創建一個永不改變的Validator實例:

$v = Validator::make($data, [ 
    'email' => 'required|email', 
    'games' => 'required|numeric', 
]); 

假設我們的Web應用程序是針對遊戲收藏家的。如果一位遊戲收藏家註冊我們的應用程序,並且他們擁有100多款遊戲,我們希望他們解釋爲什麼他們擁有這麼多遊戲。例如,也許他們經營一家遊戲轉售店,或者他們只是喜歡收藏。爲了有條件地添加這個需求,我們可以在Validator實例上使用有時候的方法。

$v->sometimes('reason', 'required|max:500', function ($input) { 
    return $input->games >= 100; 
}); 
+0

所以將這項工作: '$ V =驗證::使($的數據,[ ]); //無規則provided' '$ V->有時( 'A', '需要',函數($輸入){ 如果($輸入 - > d == 1){ 返回假; }; if(($ input-> B!= null)||($ input-> C!= null)){ return true; }; }); ' – Muhammad

+0

找出來的最簡單的方法是測試:) –

+0

沒有運氣,它不起作用:/ – Muhammad

相關問題