我有3个字段'account_name','billable_option' and 'billable_option_yes'
如果未填写'billable_option'
则需要'billable_option_yes'
,如果'billable_option_yes'
未填写则需要'billable_option'
如果'account_name'值为0,我想检查两个字段是不是必需的 我想结合验证required_unless:account_name,0
if($account!=0){ } not working
$account=$request->account_name;
if($account!=0){ //not working
$this->validate($request,[
'billable_option' => 'required_without:billable_option_yes',
'billable_option_yes' =>'required_without:billable_option',
],$messages);
}
$messages=[
'billable_option.required_without'=>'The Billable is Required',
'billable_option_yes.required_without'=>'The Billable optoion is Required',
];
$this->validate($request,[
...
'billable'=>'required_unless:account_name,0', //fourth field working fine
..
],$messages);
答案 0 :(得分:0)
您可能需要查看文档中的Require if验证规则。
<强> required_if:anotherfield,值,... 强>
如果anotherfield字段等于任何值,则验证字段必须存在且不为空。
答案 1 :(得分:0)
您是否检查了if条件中使用的比较,
如果您的account_name
字段是字符串,那么您就不能这样比较:
if($account != 0)
{
....
}
这会将字符串$account
与整数0进行比较,以便条件永远不会为真。所以,你必须改变,
if($account != '0')
{
....
}
现在,如果帐户为0,您还希望不对billable_option
和billable_option_yes
进行验证检查。
因此,您可以在单个if条件内编写验证方法,并且在if条件结束后无需添加更多验证代码。
if($account != '0'){ // if $account is string variable
$this->validate($request,[
'billable_option' => 'required_without:billable_option_yes',
'billable_option_yes' =>'required_without:billable_option',
],
$messages = [
'billable_option.required_without'=>'The Billable is Required',
'billable_option_yes.required_without'=>'The Billable option is Required',
]);
}
希望你明白。