0

我创建了一个自定义表单请求php aritisan make:request,并添加了验证规则:

    public function rules()
    {
        return [
            'first_name' => 'required|string',
            'last_name' => 'required|string',
            ...
            'email' => 'email|unique:auth_user,email',
            'password' => ['required', 'confirmed', Password::min(8)],
            'password_confirmation' => 'required|string|min:8',
        ];
    }

但是,它会将我重定向到索引页面。这是我的功能:

public function store(RegistrationFormRequest $request)
{
    return dd($request);
}

我的POST请求实际上没有任何参数,所以我已经假设它不会到达dd函数,而是422在验证失败时发送错误。但它没有,而是将我重定向到我的路线/上的页面。web.php

这是结构:

api.php:

Route::post('auths/register', [UserController::class, 'store']);

控制器:

public function store(RegistrationFormRequest $request)
{
    return dd($request);
}

自定义表单请求类:

class RegistrationFormRequest 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 [
            'first_name' => 'required|string',
            'last_name' => 'required|string',
            'middle_name' => 'required|string',
            'phone' => 'required|numeric|size:10',
            'region' => 'exists:base_addressoption,name',
            'province' => 'exists:base_addressoption,name',
            'city' => 'exists:base_addressoption,name',
            'brgy' => 'exists:base_addressoption,name',
            'street' => 'required|string',
            'address1' => 'required|string',
            'zip_code' => 'required|numeric',
            'address2' => 'nullable|string',
            'email' => 'email|unique:auth_user,email',
            'password' => ['required', 'confirmed', Password::min(8)],
            'password_confirmation' => 'required|string|min:8',
        ];
    }
}

当我添加所有参数时它可以工作,但是当参数不存在时我需要验证。它需要返回一个错误422

更多信息。使用常规Request作品,但在使用我自己的表单请求时不使用

public function store(Request $request)
{
    return dd($request);
}
4

1 回答 1

0

后来我找到了答案。这是一个 API 路由请求,但 Laravel 的行为就好像它是一个常规的 Web 路由。

因此,如果您在 PostmanX-Requested-With: XMLHttpRequest中进行测试,请添加标头,以便 Laravel 知道它是一个 XHR 请求。

于 2021-12-11T05:55:27.990 回答