Ở bài trước, mình đã hướng dẫn cho các bạn về mô hình MVC trong Laravel 5, đồng thời nắm được cách mà dữ liệu được hiển thị từ bên trong model ra ngoài view như thế nào. Trong bài hôm nay chúng ta sẽ cùng nhau tiếp tục tìm hiểu cách lưu dữ liệu vào bên trong database thông qua thông qua ví dụ tạo form trong Laravel 5.

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.

Gợi ý: Tặng coupon 40% giá trị khóa học tạo website với Laravel 5

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

form trong laravel 5
thẻ form trong laravel 5

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

Laravel đã 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

Tạo thẻ input trong form laravel 5
Tạo thẻ inut trong form

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

submit form trong laravel 5
form trong laravel 5

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.

Có thể bạn quan tâm: Tặng coupon 40% giá trị khóa học tạo website với Laravel 5

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 :

Chạ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 !

Xem thêm : Khóa học tạo website hoàn chỉnh với Laravel 5 tặng mã giảm giá 40% + Hỗ trợ việc làm sau khi học xong

 


Nếu bạn thấy bài viết có ích và muốn cảm ơn mình thì bạn có thể donate mời mình 1 lý cà phê nhé
Địa chỉ ví BTC của mình : 1NWVkBYnd5iSZ5BsAg4fbr4bYWC7hn9Vcz
Địa chỉ ví ETH của mình : 0xa4881fe9ed28b270a7a7F6D339fe0B73c35DBAd1
Cám ơn và chúc bạn nhiều niềm vui trong cuộc sống !