如何在Laravel中使用required_if验证?

时间:2019-08-09 04:24:12

标签: php json laravel

我真的很想知道我应该如何在required_if上使用JSON

我仍然对API的概念感到困惑,但是我必须完成我的任务,我已经在控制器上添加了validation,但是它不起作用。

public function StoreReqSchedule(Request $request){

    $this->validate([
        'reqtype'=> 'required',
        'startdate' => 'required',
        'enddate' => 'required',
        'reason'=> 'required_if: reqtype,==, Request Day Off',
        'route' => 'required_if: reqtype,==, Request Schedule',
        'actualschedule' => 'required_if:reqtype,==, Change Schedule',
        'changetoschedule'=>'required_if:reqtype,==,Change schedule',
        'swapcrewid'=> 'required_if:reqtype,==,Swap Schedule',
        'swapcrewschedule'=>'required_if:reqtype,==,Swap Schedule',
        'note'=>'required'
    ]);
    // ...
}

如果需要,这是正确的使用方式吗?

****编辑**

每个API endpoint都包含以下参数:

  1. 用于请求计划:

  2. 请求类型

  3. 开始日期

  4. 结束日期

  5. 原因(如果请求类型为Request Day O ff ,则为必填项)

  6. 路线(如果请求类型为“请求时间表”,则为必填

  7. 实际时间表(如果请求类型为更改时间表,则为必填)

  8. 更改时间表(如果请求类型为更改时间表,则为必填项)

  9. swap-crew-id(如果请求类型为“交换计划”,则为必填项)

  10. 交换组计划(如果请求类型为交换计划,则必须提供)

  11. 注释

上面列出的是任务,我很难理解如何编写如果请求类型为Request Day O ff 是强制性的,则必须编写代码。

  

ErrorException:的声明   App \ Http \ Controllers \ B777Controller :: validate($ request)应该是   与...兼容   App \ Http \ Controllers \ Controller :: validate(Illuminate \ Http \ Request   $ request,数组$ rules,数组$ messages =数组,数组   $ customAttributes = Array)>>这是错误

2 个答案:

答案 0 :(得分:2)

您只需要删除==,之后的'空白',并将$request对象传递给validate()方法。见下文:

$this->validate($request, [
    'reqtype'=> 'required',
    'startdate' => 'required',
    'enddate' => 'required',
    'reason'=> 'required_if:reqtype,==,Request Day Off',
    'route' => 'required_if:reqtype,==,Request Schedule',
    'actualschedule' => 'required_if:reqtype,==,Change Schedule',
    'changetoschedule'=>'required_if:reqtype,==,Change schedule',
    'swapcrewid'=> 'required_if:reqtype,==,Swap Schedule',
    'swapcrewschedule'=>'required_if:reqtype,==,Swap Schedule',
    'note'=>'required'
]);

Demo

答案 1 :(得分:0)

我认为您没有通过$ request对象来验证功能

public function StoreReqSchedule(Request $request){

    $this->validate($request,[
        'reqtype'=> 'required',
        'startdate' => 'required',
        'enddate' => 'required',
        'reason'=> 'required_if: reqtype,==, Request Day Off',
        'route' => 'required_if: reqtype,==, Request Schedule',
        'actualschedule' => 'required_if:reqtype,==, Change Schedule',
        'changetoschedule'=>'required_if:reqtype,==,Change schedule',
        'swapcrewid'=> 'required_if:reqtype,==,Swap Schedule',
        'swapcrewschedule'=>'required_if:reqtype,==,Swap Schedule',
        'note'=>'required'
    ]);
    // ...
}