Form trong Laravel 5

Bởi Hung Nguyen vào January 2016

Form trong Laravel 5

Laravel 5 hỗ trợ chúng ta tạo form một cách dễ dàng thông qua các hàm đã xây dựng sẵn. Trong bài viết này mình sẽ hướng dẫn các bạn tạo 1 form dùng để lưu thông tin bài viết vào bảng articles mà chúng ta đã sử dụng ở các bài trước.

1. Thêm routes

Mình sẽ thêm một route mới dùng để hiển thị form cho người dùng nhập thông tin, route này sẽ có nhiệm vụ gọi tới function create() trong ArticlesController

 

2. Sửa file controller ArticlesController.php

Bên trong file ArticlesControllers.php đã tạo ở bài trước, mình thêm một function mới gọi là create() ứng với route đã được tạo. Function này sẽ có trách nhiệm gọi view là create.blade.php để hiện thị form

 

3. Cài đặt gói service HtmlServiceProvider

Để có thể sử dụng form trong Laravel 5, chúng ta cần phải cài đặt thêm gói HtmlServiceProvider, vì Laravel khi cài đặt ban đầu chưa tích hợp nó vào. HtmlServiceProvider cung cấp các phương thức đã xây dựng sẵn giúp chúng ta thao tác với form được dễ dàng hơn.

Để download cài đặt gói HtmlServiceProvider, mình mở cmd, gõ lệnh sau:

các bạn đợi khoảng vài giây để tiến trình cài đặt diễn ra như dưới đây :

Tiếp đến, sau khi đã cài đặt xong ServiceHtmlProvider, các bạn mở config/app.php, tìm đến các dòng chứa các provider của Laravel :

và thêm 1 HtmlServiceProvider mới

vào ở cuối như sau :

Tiếp đến các bạn tìm đến dòng chứa các aliases

và thêm 2 alias mới là Form và Html

vào cuối như sau :

Đến đây chúng ta đã setup các yêu cầu cần thiết để có thể sử dụng form trong laravel 5. Tiếp đến chúng ta sẽ tạo view để hiển thị form.

4. Tạo view

Trong thư mục view, tiếp tục tạo file view như đã nhắc ở trên là create.blade.php có nội dung như sau :

 

Lưu lại, sau đó bật cmd gõ lệnh sau để chạy server laravel

bạn sẽ thấy message trả về là

vào trình duyệt gõ đường dẫn sau :

1 trang trắng sẽ hiện ra với tiêu đề là Them Bai Viet Moi vì lúc này chúng ta chỉ mới tạo thẻ form chứ chưa tạo bất cứ một input nào cả. Dùng Inspect Element trong chrome hoặc firefox (nhấn F12 hoặc trên trình duyệt, click chuột phải chọn Inspect Implement) , bạn sẽ thấy một thẻ form đã được tạo ra như hình dưới

laravel-form

Các bạn thấy đó, rõ ràng với cách viết đơn giản

aravel đã tự động tạo ra cho chúng ta thẻ form với method là POST, còn action là đường dẫn gọi tới route hiện tại của chúng ta.

Tiếp theo, mình sẽ thêm 1 input mới gọi là name và có label là Name vào thẻ form như sau :

Chạy lại đường dẫn trên bạn sẽ thấy 1 thẻ input mới được tạo ra như hình dưới
laravel-form-input
Tương tự, mình thêm 1 input mới gọi là author và button submit form:

Chạy lại đường dẫn, bạn sẽ thấy như thế này
form-submit_1
Vậy là chúng ta đã thiết kế xong 1 form đơn giản trong Laravel 5. Tiếp đến mình sẽ viết code để khi người dùng họ điền thông tin vào các input và ấn submit form, ta sẽ tiến hành lưu các gía trị này vào database.

5. Lấy gía trị từ form

Ở mục 4 trên, các bạn thấy action của thẻ form mặc định đang gọi tới route hiện hành của chúng ta là

 

Nhưng ở đây mình muốn khi submit form sẽ chạy vào một route mới gọi là articles, nên mình sẽ edit lại action của form một chút như sau

điều này đồng nghĩa với việc bạn phải tạo một route mới là articles với method là POST trong file routes.php

route này có nhiệm vụ chuyển hướng data từ các thẻ input khi submit form bằng phương thức POST tới function store() trong ArticlesController. Vì thế trong ArticlesController.php mình sẽ thêm 1 function mới gọi là store() có nội dung sau:

Các bạn lưu ý là để có thể lấy được thông tin từ các input, thì bạn phải truyền đối tượng Request vào bên trong hàm store của chúng ta.

Chạy lại đường dẫn, điền thông tin vào các thẻ input (ở đây input name mình điền là “hieu”, input author điền “kungfuphp”) và ấn button Them moi, mình sẽ lấy được các thông tin được POST đi từ form dưới dạng json như sau.

6. Lưu gía trị lấy được vào database

Sau khi các bạn đã lấy được gía trị từ form, việc tiếp theo thì chúng ta sẽ thực hiện lưu dữ liệu lấy được này vào database.

Mình sửa lại function store() một chút như sau :

 

hạy lại url điền thông tin và ấn Them moi, bạn sẽ được chuyển hướng tới trang http://localhost:8000/articles, với thông tin hiển thị ra là thông tin bạn đã lưu vào database :

Tổng kết : Bài viết này mình đã chia sẽ tới các bạn về tạo form trong laravel 5 và cách mà dữ liệu nhập từ form được lưu vào trong database như thế nào. Chúc các bạn học tốt !

Nguồn : kungfuphp.com