如何使用相同的请求来实现 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;
}

希望对你有用,有问题请告诉我。