如何使用相同的请求来实现 Laravel 中的替代功能
how to use the same request to for alternative functions in Laravel
我想验证对我的 createUser 函数的请求,因此我创建了自定义请求并添加了我的规则
然后我想验证对我的 updateUser 函数的相同请求,但我想在新函数中删除 "required" 的规则而不创建新的自定义请求
我的自定义请求
class userRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'priv' => 'required|integer',
];
}
protected function failedValidation(Validator $validator)
{
$response = [
'status' => 'failure',
'status_code' => 400,
'message' => 'Bad Request',
'errors' => $validator->errors(),
];
throw new HttpResponseException(response()->json($response, 400));
}
}
您应该为每种要使用的方法进行不同的请求验证,您可以在此处阅读更多内容https://laravel.com/docs/7.x/validation
你可以先检查路由并修改$rules
数组,我建议你试试下面的代码:
public function rules()
{
$rules = [
'name' => 'string|max:255',
'email' => 'string|email|max:255|unique:users',
'password' => 'string|min:6|confirmed',
'priv' => 'integer',
];
if (request()->route() != route('createUserRouteName')) { // write route name of createUser method
foreach ($rules as $key => $rule) {
$rules[$key] = 'required|' . $rule;
}
}
return $rules;
}
希望对你有用,有问题请告诉我。
我想验证对我的 createUser 函数的请求,因此我创建了自定义请求并添加了我的规则 然后我想验证对我的 updateUser 函数的相同请求,但我想在新函数中删除 "required" 的规则而不创建新的自定义请求
我的自定义请求
class userRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|string|email|max:255|unique:users',
'password' => 'required|string|min:6|confirmed',
'priv' => 'required|integer',
];
}
protected function failedValidation(Validator $validator)
{
$response = [
'status' => 'failure',
'status_code' => 400,
'message' => 'Bad Request',
'errors' => $validator->errors(),
];
throw new HttpResponseException(response()->json($response, 400));
}
}
您应该为每种要使用的方法进行不同的请求验证,您可以在此处阅读更多内容https://laravel.com/docs/7.x/validation
你可以先检查路由并修改$rules
数组,我建议你试试下面的代码:
public function rules()
{
$rules = [
'name' => 'string|max:255',
'email' => 'string|email|max:255|unique:users',
'password' => 'string|min:6|confirmed',
'priv' => 'integer',
];
if (request()->route() != route('createUserRouteName')) { // write route name of createUser method
foreach ($rules as $key => $rule) {
$rules[$key] = 'required|' . $rule;
}
}
return $rules;
}
希望对你有用,有问题请告诉我。