Validation Laravel将请求转换为不同的请求

Validation Laravel将请求转换为不同的请求,validation,laravel,casting,Validation,Laravel,Casting,我有三个不同的表格提交给同一个控制器在拉威尔。每个表单都有自己的验证规则存储在请求中。下面是我的代码示例: public function store($id, $type, Request $request) { switch ($type) { case 'daily': $this->monthly($id, $type, $request); break; case 'monthly':

我有三个不同的表格提交给同一个控制器在拉威尔。每个表单都有自己的验证规则存储在请求中。下面是我的代码示例:

public function store($id, $type, Request $request)
{
    switch ($type) {
        case 'daily':
            $this->monthly($id, $type, $request);
            break;
        case 'monthly':
            $this->monthly($id, $type, $request);
            break;
        case 'yearly':
            $this->yearly($id, $type, $request);

    }
    return redirect(route('x.show', $id));
}


private function monthly($id, $type, MonthlyFormRequest $request)
{
    //store form
}

但是,这不起作用,并且会引发实例错误,因为
请求
每月
方法中的
每月请求
的类型不同。是否有办法将
请求
强制转换为
月请求
或其他方法?我宁愿避免在控制器本身中声明验证规则。在store方法中获得统一的
请求
类型请求,然后每月使用
进行请求
的最佳方法是什么?

您可以通过请求参数传递类型,并将开关盒移动到您的请求,并在那里执行检查,如下所示:

在你的请求中:

   public function rules()
        {
          switch($this->type){
             case 'dailty':
                  return [
                           'field': 'required'
                         ];
                  break;
             case 'monthly':
                  return [
                           'field': 'required'
                         ];
                  break;
             case 'yearly':
                  return [
                           'field': 'required'
                         ];
                  break;
          }

      }
在控制器中:

public function store($id, YourCustomRequest $request)
{
    return redirect(route('x.show', $id));
}