Submit form
Mặc dù có thể submit form HTML truyền thống với Inertia, cách này không được khuyến nghị vì sẽ làm tải lại toàn bộ trang. Thay vào đó, tốt hơn là chặn việc submit form rồi thực hiện request bằng Inertia.Validation phía máy chủ
Xử lý lỗi validation phía máy chủ trong Inertia hơi khác so với xử lý lỗi từ request XHR / fetch thủ công. Khi thực hiện request XHR / fetch, bạn thường kiểm tra response có status code422 rồi tự cập nhật state lỗi của form.
Tuy nhiên, khi dùng Inertia, máy chủ không bao giờ trả response 422. Thay vào đó, như ví dụ trên, route / controller thường trả về response redirect — tương tự một lần submit form tải toàn bộ trang truyền thống.
Để tìm hiểu đầy đủ về cách xử lý và hiển thị lỗi validation với Inertia, hãy xem tài liệu validation.
Form helper
Vì làm việc với form là nhu cầu rất phổ biến, Inertia cung cấp form helper nhằm giảm lượng boilerplate code cần thiết khi xử lý các lần submit form thông thường.get, post, put, patch và delete.
preserveState, preserveScroll và callback sự kiện; các callback này hữu ích để thực hiện tác vụ sau khi submit form thành công. Ví dụ, bạn có thể dùng callback onSuccess để reset input về trạng thái ban đầu.
transform().
processing để theo dõi form có đang được submit hay không. Điều này hữu ích để ngăn submit hai lần bằng cách disable nút submit.
progress, giúp bạn dễ dàng hiển thị tiến độ tải lên.
errors. Khi xây dựng ứng dụng Inertia dùng Laravel, lỗi form sẽ tự động được điền khi ứng dụng ném ra instance ValidationException, chẳng hạn khi dùng {'$request->validate()'}.
hasErrors. Để xóa lỗi form, dùng phương thức clearErrors().
setErrors().
wasSuccessful sẽ là true. Ngoài ra, form còn có thuộc tính recentlySuccessful, được đặt thành true trong hai giây sau một lần submit thành công. Bạn có thể dùng thuộc tính này để hiển thị thông báo thành công tạm thời.
Để reset các giá trị của form về giá trị mặc định, bạn có thể dùng phương thức reset().
defaults() để cập nhật chúng. Sau đó, form sẽ được reset về đúng các giá trị này trong lần tiếp theo phương thức reset() được gọi.
isDirty.
cancel().
Tải file lên
Khi thực hiện request hoặc submit form có chứa file, Inertia sẽ tự động chuyển dữ liệu request thành objectFormData.
Để tìm hiểu kỹ hơn về tải file, hãy xem tài liệu tải file.
Submit bằng XHR / Fetch
Dùng Inertia để submit form phù hợp với phần lớn tình huống; tuy nhiên, nếu cần kiểm soát quá trình submit chi tiết hơn, bạn hoàn toàn có thể thực hiện request XHR hoặcfetch thuần bằng thư viện mình lựa chọn.