2017-10-04 5 views
2

を追加:あなたが見ることができるようにLaravel 5.5は条件付きで私はこのようなAJAXポストから入ってくるデータ持って検証ルール

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

ありがとうございます!これは私が欲しかったのと全く同じように思えます:) –

関連する問題