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