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 Jetstream Inertia 所有 Inertia 请求都必须收到有效的 Inertia 响应