是否可以在我的函数中创建动态FormRequest验证?请参阅下面的示例代码。
public function rules()
{
return [
'firstname' => 'required',
'middlename' => 'required',
'lastname' => 'required'
];
}
我的意思是我将“Request”参数更改为变量$ formRequest。
我的目标是,我想为单个模型的动态数据集创建不同的验证规则。
如果我能通过其他方式实现这一目标,请告诉我。谢谢!
编辑:
示例场景: 我有一个包含名字,中间名和姓氏字段的表单。
第一条规则:
public function rules()
{
return [
'firstname' => 'required',
'lastname' => 'required'
];
}
第二条规则:
ng-model
第二条规则中只需要名字和姓氏。
我只是想知道是否有其他方法可以做到这一点,而不是创建多个商店方法并添加更多路线。
答案 0 :(得分:2)
在FormRequest
实例上跳过validate
并使用$request
方法可以实现此目的。 Laracasts甚至上过课。
public function store(Request $request) {
$rules = [/*...*/];
$attributes = $request->validate($rules);
Model::create($attributes);
return redirect(url('/'));
}
答案 1 :(得分:2)
您可以创建自定义请求:
php artisan make:request CustomRequest
这将生成此类:
class CustomRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
//
];
}
}
authorize()
方法将确定是否可以首先验证请求。
rules()
方法将返回当前请求的验证规则。
然后在你的控制器功能中:
public function yourfunction(CustomRequest $request)
答案 2 :(得分:0)
在验证规则中,您可以简单地添加“有时”规则。您可以在这里https://laravel.com/docs/5.7/validation#conditionally-adding-rules
找到它 public function rules()
{
return [
'firstname' => 'required',
'middlename' => 'sometimes|required',
'lastname' => 'required'
];
}