如何在 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.