簡體   English   中英

如何在 InertiaJS 中進行表單驗證

[英]How to make a form validation in InertiaJS

我關注此鏈接以獲取inertiaJS教程。 順便說一句,我正在使用laravel 8

下面這張圖片來自我的網頁。 我不知道為什么我沒有頁面>圖片中的錯誤。 除了我提供的鏈接之外,還有其他方法可以驗證表單嗎?

我在 HTML 中注釋掉了 page.error,因為它導致我出現Error in render: "TypeError: Cannot read property 'email' of undefined"因為我的 Page.Error 是一個空的 object。

在此處輸入圖像描述

更新:我的 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'),
        ];
    });
}

要訪問 email 錯誤,需要通過this關鍵字添加上下文,即。 this.$page.props.errors.email

嘿,我認為您沒有在 Controller 中共享錯誤包,這就是為什么為空,要解決此問題,請將 go 到您的AppServiceProvider並添加此代碼。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM