2017-02-11 3 views
0

laravel配列キー検証ルール

"accountType": { 
    "admin" : true, 
    "advertiser": true, 
    "publisher": true, 
    "agency": true 
    }, 

私は管理者がtrueの場合、何もしないとパスをチェックしたいのですが、管理者が虚偽であり、他に該当する場合や、 accountTypeオブジェクトの検証には管理者がいません。無効なアカウントタイプです。

リクエスト配列に管理者がいるかどうかを確認したい場合は、検証をパスし、そうでない場合はエラーを表示します。逆も同様です。

は、これは私の検証であるが、それはちょうど、とにかく合格:

$validator = Validator::make($this->request->all(), [ 
      'accountType.admin' => 'boolean:true', 
      'accountType.advertiser' => 'boolean:false', 
      'accountType.publisher' => 'boolean:false', 
      'accountType.agency' => 'boolean:false', 
     ]); 
+0

。 –

+0

@RossWilsonだからあなたの提案はうまくいくのですか? –

答えて

1

はドキュメントから、トリックを行う必要があります

$validator = Validator::make($this->request->all(), [ 
      'accountType.admin' => 'required|boolean:true', 
      'accountType.advertiser' => 'boolean:false', 
      'accountType.publisher' => 'boolean:false', 
      'accountType.agency' => 'boolean:false', 
     ]); 
+0

機能していません。すべての属性を渡しました。私は広告主や他の役割が合格することを意味します。もし彼らが真実ならば、他の役割にエラーを投げたいです。 –

0

をお試しください:彼は、検証の下のフィールドとしてキャストすることができなければなりませんブール値。受け入れられる入力はtrue、false、1,0、 "1"、 "0"です。

$validator = Validator::make($this->request->all(), [ 
    'accountType.admin' => 'boolean', 
    'accountType.advertiser' => 'boolean', 
    'accountType.publisher' => 'boolean', 
    'accountType.agency' => 'boolean', 
]); 
+0

あなたは完全に質問を読んでいませんか? admin以外の他の役割が設定されていて、その値が真であれば、私はエラーを投げてしまいます。 –

+0

ミドルウェアを使用しない理由は何ですか? – Adam

+0

これは言及していませんが、この検証はユーザー役割を更新するためのものです。私は私の質問では、管理者だけが真であるかどうかをチェックする必要があると言いました。しかし、私の問題は、それが真実か偽であれば、それはちょうど合格します。 –

0

あなたが好きな検証その後、真のための1にあなたの値を変更し、偽のための0でした: `boolean`検証ルールはパラメータを受け付けません

$validator = Validator::make($this->request->all(), [ 
    'accountType.admin' => 'required|min:1', 
    'accountType.advertiser' => 'required|min:1', 
    'accountType.publisher' => 'required|min:1', 
    'accountType.agency' => 'required|min:1', 
]); 
+1

私はチェックしてお知らせします –

+0

それは助けになりませんでした、それは私に1文字のエラーが必要でした。私のリクエストはaccountType.agency:trueで構成されています –

関連する問題