2017-02-18 9 views
1

入れ子条件の検証ルールに問題があります。他の条件での検証ルールrequired_if(Laravel 5.4)

class StoreRequest extends Request 
{ 
     public function authorize(){ 
     return true; 
     } 

     public function rules(){ 
       return [ 
        'type_id'  => 'required|integer', 
        'external_id' => 'required_if:type_id,==,3|integer', 
       ]; 
     } 
} 

確かに私がしたい: - わずか3 に等しいTYPE_ID場合external_idをチェック - そしてそれは整数だかどうかを確認します。

external_id必要があります:私は、私は1または2のような別のTYPE_IDを、選択した場合でも、検証が通らない3 に等しいTYPE_IDを選択したときに

私は自分のフォームを投稿し、ルールは動作します整数である。

私がNULL可能条件を追加しようとしたが、もう

をrequired_if動作しませんが、あなたはどんな考えを持っていましたか?

答えて

2

ルールは、互いに独立した2つのチェックを実行します。 type_id!= 3のときにexternal_idフィールドが必須ではないため、整数チェックが無視されるわけではありません。

あなたが探しているものはconditional ruleで、チェックをいつ行うかを細かく制御できます。 :フォームの検証を使用している場合、あなたはgetValidatorInstance()メソッドオーバーライドすることで基本となるバリデータインスタンスにアクセスすることができます

$validator = Validator::make($data, [ 
    'type_id' => 'required|integer' 
]); 

$validator->sometimes('external_id', 'required|integer', function($input) { 
    return $input->type_id == 3; 
}); 

class StoreRequest extends Request 
{ 
     public function authorize(){ 
     return true; 
     } 

     public function rules(){ 
       return [ 
        'type_id'  => 'required|integer' 
       ]; 
     } 

     protected function getValidatorInstance() { 
      $validator = parent::getValidatorInstance(); 
      $validator->sometimes('external_id', 'required|integer', function($input) { 
       return $input->type_id == 3; 
      }); 
      return $validator; 
     } 
} 
0

する

class StoreRequest extends Request 
    { 
      public function authorize(){ 
      return true; 
      } 

      public function rules(){ 
        return [ 
         'type_id'  => 'required|integer', 
         'external_id' => 'required_if:type_id|in:3|integer', 
        ]; 
      } 
    } 
0

ちょうど同じ問題に出くわし、これを試してみてくださいをし、私にはうまくいくと思われる以下の答えが見つかりました:

0123私にとって

 return [ 
       'type_id'  => 'required|integer', 
       'external_id' => 'required_if:type_id,==,3|nullable|integer', 
      ]; 

結果:読み込まない

フィールド、id型ではない3 - 失敗 - - 必要なフィールド

フィールド人口移入されません

フィールド、id型3を渡します、タイプid 3、非整数 - 整数ルールで失敗する

フィールドには、id 3、integer-pa ss - すべていいよ!

メモ - nullableルールがLaravel 5.3に入ったと思われます。

関連する問題