2017-11-21 16 views
0

管理者がメンバーシップアプリケーションの検証カスタム検証規則を設定できる管理パネルで作業しています。データベースに$ attribute => $ rulesのペアを設定する必要があることを理解しています。Laravel:ルールごとの再帰的検証

しかし、実装する方法がわかりません。管理者は、各$ key => $ルールのペアが再帰的に必要であり、親が失敗した場合に実行される子$ key => $ルールのペアをオプションとして持つことができます。したがって、最終的には、各ルールに0〜多くの子ルールを持たせることができます。これらのルールはすべて、親ルールを渡すために渡す必要があります。

例:

// Original validation (Assume age = 16, time_at_job = 18 and monthly_income = 3000) 
[ 
    'age' => 'min:21', // Fail, but pass because of subset is all pass 
    'time_at_job' => 'min:6' // Pass 
    'monthly_income' => 'min:2000' // Pass 
] 

// If the original age fails and this passes, then age passes and continue to the original 
time_at_job. 
[ 
    'age' => 'min:18, // Fail, but pass because of subset is all pass 
    'time_at_job' => 'min:12' // Pass 
    'monthly_income' => 'min:2500' // Pass 
] 

// If the subset age passed and this passes, then the subset age passes, but the subset 
time_at_job and monthly income will need to pass before the original age can pass. 
[ 
    'age' => 'min:16, // Pass 
    'time_at_job' => 'min:18' // Pass 
    'monthly_income' => 'min:3000' // Pass 
] 

これを開始する場所に任意の助けいただければ幸いです。

答えて

0

私はあなたがバリでのルールの後に続いて

public function rules(){ 
    return [ 
    'age' => $this->ageChildCheck(), 
    ] 
} 

のように、配列値としてメソッド呼び出しを使用することができます想像:あなたは可変何を設定できるようにする必要があります

public function ageChildCheck(){ 
    $data = $this->validationData(); 
    if($data['time_at_job'] > passNumber && $data['monthly_income'] > passNumber2){ 
     return 'min:0'; 
    }else{ 
     return 'min:18'; 
    } 
} 

バリデーションのルールは最後になります。条件が満たされると自動的に合格する場合は0に、失敗した場合は18に設定します。

関連する問題