首页 > 解决方案 > 如何在 Laravel 中使用 required_if 验证?

问题描述

我真的很想知道我应该如何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 Off 则为必填项

  6. route(如果请求类型 Request Schedule 则为必填项

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

  8. change-to-schedule (如果请求类型变更时间表,则为必填项)

  9. swap-crew-id(如果请求类型交换计划则为强制性)

  10. swap-crew-schedule(如果请求类型为 Swap Schedule,则为强制性)

  11. 笔记

上面的那些列表是任务,如果请求类型为 Request Day Off和其他强制性 ofc ,我很难理解如何为 Mandatory 编写代码。

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

标签: phpjsonlaravel

解决方案


您只需要在之后删除“空白”==,并将$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'
]);

演示


推荐阅读