Laravel 自定义表单请求重定向到索引页面

Posted

技术标签:

【中文标题】Laravel 自定义表单请求重定向到索引页面【英文标题】:Laravel custom form request redirecting to index page 【发布时间】:2022-01-15 15:21:36 【问题描述】:

我已经使用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);

【问题讨论】:

@JohnLobo 我需要它是真实的。是公共路线。它必须是真实的。如果我将其设置为 false,那么我必须对用户或其他东西进行身份验证。这是要注册的客户可公开访问的途径。 【参考方案1】:

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

所以如果你在 Postman 中进行测试,请在标头中添加 X-Requested-With: XMLHttpRequest,以便 Laravel 知道它是一个 XHR 请求。

【讨论】:

以上是关于Laravel 自定义表单请求重定向到索引页面的主要内容,如果未能解决你的问题,请参考以下文章

表单提交重定向到codeigniter的索引页面

在 laravel 5.3 中重定向回请求的页面

验证后挂钩未重定向到表单页面

如何将所有访客请求重定向到 Laravel 应用程序中的登录页面?

在 Laravel 中无效后防止重定向到主页

在 Laravel POST 请求上重定向 302