2017-10-04 59 views
2

我有數據進來通過AJAX後是這樣的:Laravel 5.5有條件地將驗證規則

data: 
    0: {type: 'percent', amount: 10,…} 
    1: {type: 'percent', amount: 200,…} 

正如你所看到的,數組中的最後一個項目是一個問題。如果類型是百分比,且數量超過100,則驗證應該失敗。

我使用下面的函數來驗證請求:

public function validateRequest($request) { 
    $rules = [ 
     'data.*.type' => 'required|alpha', 
     'data.*.amount' => 'required|min:1|int', 
    ] 
    $messages = [...]; 
    Validator::make($request->all(), $rules, $messages)->validate(); 
} 

我一直在尋找的Validation頁面上,我想我需要在max:100規則有條件地添加到特定的數組索引,但只有當特定數組索引'typepercent。我只是不知道如何完成。

預先感謝您!

回答

3

我通常會做這樣的事情簡單的是這樣的:

$rules = [ 
    'data.*.type' => 'required|alpha', 
    'data.*.amount' => ['required', 'min:1', 'int'], 
]; 

foreach ($request->input('data') as $key => $value) 
{ 
    if (array_get($value, 'type') == 'percent') { 
     $rules["data.{$key}.amount"][] = 'max:100'; 
    } 
} 

通告規則,而不是管陣列的語法,使其更容易添加額外的規則。

+0

非常感謝!這似乎完全按照我的意願:) –