如何在 InertiaJS 中进行表单验证
How to make a form validation in InertiaJS
我正在按照此 Link 获取 inertiaJS
教程。顺便说一句,我正在使用 laravel 8
下面这张图片来自我的网页。我不知道为什么我没有页面 > 给出的图片有错误。除了我提供的 link 之外,还有其他方法可以验证表单吗?
我在 HTML 中注释掉了 page.error 因为它导致我出错 Error in render: "TypeError: Cannot read property 'email' of undefined"
因为我的 Page.Error 是一个空对象。
Update : Code for my controller
脚本代码
<script>
import Layout from "../../Shared/Layout";
export default {
components: {
Layout,
},
data() {
return {
lead: {
name: "",
email: "",
phone: "",
dob: "",
interested_package: "",
},
};
},
methods: {
async handleSubmit() {
let res = await this.$inertia.post("/leads/save", this.lead);
},
},
};
</script>
应用服务提供商
public function boot()
{
//
Schema::defaultStringLength(255);
Inertia::share([
'errors' => function () {
return Session::get('errors')
? Session::get('errors')->getBag('default')->getMessage()
: (object)[];
}
]);
Inertia::share('flash', function () {
return [
'message' => Session::get('message'),
'success' => Session::get('success'),
'error' => Session::get('error'),
];
});
}
嘿,我认为你没有在 Controller 中共享错误包,这就是为什么它是空的,要解决这个问题,请转到你的 AppServiceProvider
并添加此代码。
Inertia::share([
'errors' => function () {
return Session::get('errors')
? Session::get('errors')->getBag('default')->getMessages()
: (object) [];
},
]);
要访问电子邮件错误,需要通过 this
关键字添加上下文,即。 this.$page.props.errors.email
.
我正在按照此 Link 获取 inertiaJS
教程。顺便说一句,我正在使用 laravel 8
下面这张图片来自我的网页。我不知道为什么我没有页面 > 给出的图片有错误。除了我提供的 link 之外,还有其他方法可以验证表单吗?
我在 HTML 中注释掉了 page.error 因为它导致我出错 Error in render: "TypeError: Cannot read property 'email' of undefined"
因为我的 Page.Error 是一个空对象。
Update : Code for my controller
脚本代码
<script>
import Layout from "../../Shared/Layout";
export default {
components: {
Layout,
},
data() {
return {
lead: {
name: "",
email: "",
phone: "",
dob: "",
interested_package: "",
},
};
},
methods: {
async handleSubmit() {
let res = await this.$inertia.post("/leads/save", this.lead);
},
},
};
</script>
应用服务提供商
public function boot()
{
//
Schema::defaultStringLength(255);
Inertia::share([
'errors' => function () {
return Session::get('errors')
? Session::get('errors')->getBag('default')->getMessage()
: (object)[];
}
]);
Inertia::share('flash', function () {
return [
'message' => Session::get('message'),
'success' => Session::get('success'),
'error' => Session::get('error'),
];
});
}
嘿,我认为你没有在 Controller 中共享错误包,这就是为什么它是空的,要解决这个问题,请转到你的 AppServiceProvider 并添加此代码。
Inertia::share([
'errors' => function () {
return Session::get('errors')
? Session::get('errors')->getBag('default')->getMessages()
: (object) [];
},
]);
要访问电子邮件错误,需要通过 this
关键字添加上下文,即。 this.$page.props.errors.email
.