【问题标题】:how to use required_if validation in Laravel?如何在 Laravel 中使用 required_if 验证?
【发布时间】:2019-12-16 19:22:21
【问题描述】:

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

我仍然对 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'
    ]);
    // ...
}

这是使用 required if 的正确方法吗?

****编辑**

每个API endpoint 都包含这个参数:

  1. 对于请求时间表:

  2. 请求类型

  3. 开始日期

  4. 结束日期

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

  6. 路由(如果请求类型为请求时间表则为必填

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

  8. change-to-schedule(如果请求类型为 Change Schedule,则为必填项)

  9. swap-crew-id(如果请求类型为 Swap Schedule,则为必填项)

  10. swap-crew-schedule(如果请求类型为 Swap Schedule,则为必填)

  11. 注意

上面的那些列表是任务,我很难理解如何编写 Mandatory if request type Request Day Off 和其他强制 ofc 的代码。

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

【问题讨论】:

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

标签: php json laravel


【解决方案1】:

您只需删除==, 之后的“空白”并将$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

【讨论】:

  • 如果有三种请求类型怎么办?
  • 我没听懂你:(
  • 我可以在这里张贴图片吗?我不知道如何解释它:(
  • 您不能在 cmets 中发布图片。如果问题与此不同,最好修改您的问题或创建一个新问题。
  • 请您看看我所做的编辑好吗?非常感谢您的帮助
【解决方案2】:

我认为你没有传递 $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'
    ]);
    // ...
}

【讨论】:

  • 我还没有完成,但非常感谢您帮助我! :)
猜你喜欢
  • 2021-03-06
  • 2016-10-13
  • 2022-12-08
  • 1970-01-01
  • 1970-01-01
  • 2019-03-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多