2016-06-30 69 views
0

我有三种不同的形式提交给Laravel中的同一个控制器。每个表单都有自己的验证规则存储在请求中。这里是我的代码示例:Laravel演员请求不同请求

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 
} 

然而,这并不因为Request工作,throwns实例错误是不一样的类型在monthly方法MonthlyFormRequest。有没有办法将Request转换成MonthlyFormRequest还是有其他方法可以做到吗?我宁愿避免在控制器本身中声明验证规则。在商店方法中获得统一的Request类型请求并使用MonthlyFormRequest的最佳方法是什么?

回答

3

你可以传递型槽式请求参数,因此开关情况下,有移动到您的要求和预制品的检查:

在您的要求:

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)); 
}