Laravel Inertia 不返回验证错误

Posted

技术标签:

【中文标题】Laravel Inertia 不返回验证错误【英文标题】:Laravel Inertia not returning validation errors 【发布时间】:2021-08-21 21:41:33 【问题描述】:

惯性不返回任何验证错误

这是我的控制器代码

/**
 * Store a newly created resource in storage.
 *
 * @param  \Illuminate\Http\Request  $request
 * @return \Illuminate\Http\Response
 */
public function store(Request $request)

    Request::validate([
        'firstName' => ['required', 'string', 'max:100'],
        'lastName'  => ['required', 'string', 'max:100'],
        'shopName'  => ['required', 'string', 'max:100'],
        'email'     => ['required', 'email', Rule::unique('vendors', 'email')],
        'mobile'    => ['required', 'string'],
        'password'  => ['required', 'min:6', 'max:12', 'confirmed']
    ]);

    Vendor::create($request->validated());

    return Redirect::route('vendors.create')->with('success', 'Vendor created.');

这是我的 vue 组件代码

export default 
name: "Create Vendor",
props: 
    auth: Object,
    errors: Object,
,
data() 
    return 
        form: this.$inertia.form(
            firstName: null,
            lastName: null,
            shopName: null,
            email: null,
            mobile: null,
            password: null,
            password_confirmation: null,
        ),
    ;
,

methods: 
    store() 
        return this.form.post(this.route("vendors.store"));
    ,
,

;

但提交后错误对象始终为空

注意:我还设置了 HandleInertiaRequest 中间件。

enter image description here

【问题讨论】:

$request 真的收到东西了吗? 我如何 dd() 并检查惯性 js 的响应? 【参考方案1】:

请确保这些事情

在 HandleInertiaRequests.php 文件中,中间件来自使用 Inertia\Middleware;而不是 Laravel 基金会 在 Http/Kernel.php 中,将 \App\Http\Middleware\HandleInertiaRequests::class 添加到 $middlewareGroups 以折叠所有 Web 路由。

【讨论】:

【参考方案2】:

检查app/Providers/AppServiceProvider.php文件中的register方法。

你应该有一个Inertia::share 像这样。

Inertia::share('errors', function () 
 return session()->get('errors') ? session()->get('errors')->getBag('default')->getMessages() : (object) [];
);

【讨论】:

以上是关于Laravel Inertia 不返回验证错误的主要内容,如果未能解决你的问题,请参考以下文章

Laravel Inertia (Vue) - 无需重定向即可进行身份验证

在我的 Inertia laravel 应用程序中获取 View [app] not found 错误

Laravel 8 Jetstream Inertia 没有渲染视图组件

Laravel 8 + Inertia 不渲染变量

Laravel 8 Jetstream Inertia 所有 Inertia 请求都必须收到有效的 Inertia 响应

在带有 Laravel/Inertia 的组件中使用 CKEditor