2017-04-14 118 views
2

叫我笨,但我不明白:) 我想设置验证器规则,所以它只会在两个字段中的一个出现时才会通过(adgroup或all_adgroups)。Laravel验证required_without_all

这里是我的控制器:

$this->validate($request, 
     [ 
      'new_target_cpa_value' => 'required|numeric', 
      'adgroups' => 'exists:google.ad_groups,id|required_without_all:all_agroups', 
      'all_agroups' => 'required_without_all:adgroups' 
     ] 
    ); 
    dd($request->all()); 

这里是DD:

"_token" => "aHjluUXPuZpEbglmVt4UePhriGvRWDOjk3OgfF88" "new_target_cpa_value" => "123" "adgroups" => array:1 [▶] "all_agroups" => "1"

+0

其输入类型是广告组?这是一个复选框或多选? – lewis4u

+0

adroups是多选。 name is adgroups [] 我尝试了adgroups和adgroups [] –

+0

并且至少必须选择一个?要么?一个组或所有组... – lewis4u

回答

3

试试这个:

$this->validate($request, 
     [ 
      'new_target_cpa_value' => 'required|numeric', 
      'adgroups' => 'exists:google.ad_groups,id', 
      'all_agroups' => 'required_unless:adgroups,null' 
     ] 
    ); 
+0

jel radi Branko?如果选择了任何一个广告组,all_groups将不被要求,但是如果没有选择任何组,那么将需要all_groups字段 – lewis4u

+0

hehe :) 给我几分钟检查。 –

+0

验证规则required_unless需要至少2个参数。 :) 也许这将是我写自定义验证规则的最佳选择.. –