Đưa dữ liệu ra view trong Laravel 5

Đưa dữ liệu ra view trong Laravel 5

a. Tạo PagesController.php

Đầu tiên mình sẽ tạo 1 controller mới đặt tên là PagesController.php trong thư mục Controllers của Laravel. Bạn có thể tạo file 1 cách thủ công, nhưng ở phạm vị bài viết này, mình sẽ tận dụng php artisan của Laravel 5 để tạo PagesController.php, và mình cũng khuyên các bạn nên học cách sử dụng php artisan nếu có thể để giúp phát triển ứng dụng nhanh hơn.
Để tạo PagesController.php mình sẽ làm như sau. Mở cmd (Ấn phím window , trong mục Search programs and files gõ cmd, rồi enter), gõ dòng lệnh sau để di chuyển đến thư mục chưa laravel 5 của chúng ta
tiếp đến gõ lệnh dưới đây để laravel tự động generate ra file PagesController.php
sau khi chạy lệnh trên, vào thư mục Controllers bạn sẽ thấy file PagesController.php đã được tạo tự động với các hàm default như sau :
nếu như bạn cảm thấy rằng, bạn không cần dùng tới quá nhiều hàm default như vậy, mà chỉ cần tạo ra file PagesController.php trắng, thì thay đổi lại lệnh trên (thêm –plain ) như sau:
thì bạn sẽ được 1 file PagesController.php mới gọn gàng như thế này :
Tiếp theo, mình thêm function aboutme() vào class PagesController vừa tạo để gọi view aboutme được đặt trong folder pages

b. Tạo routes

Trong file routes.php, bạn tạo 1 đoạn routes mới như sau để sử dụng PagesController ở trên

c.Tạo views aboutme.blade.php

Trong folder pages ở thư mục views (xem lại bài trước), mình sẽ tạo 1 file view mới đặt tên là aboutme.blade.php . Bạn sẽ thắc mắc tại sao không phải là aboutme.php mà lại là aboutme.blade.php thì mình xin thưa là aboutme.php hay aboutme.blade.php đều được, nhưng thêm blade nghĩa là bạn đang dùng template cho view , về phần này mình sẽ nói kĩ hơn trong bài viết sau này. Giờ thì các bạn hãy tạm chấp nhận vậy nhé :)
Tiếp tục, thông tin trong file aboutme.blade.php của mình sẽ như sau :
Vào trình duyệt, gõ địa chỉ
bạn sẽ được kết quả như sau :
laravel-5-aboutme
kết quả chạy view aboutme.blade.php

 4. Gửi dữ liệu ra view

Đây chỉnh là phần quan trọng chính trong bài viết ngày hôm nay. Nhìn lại 1 chút ở ví dụ trên, bạn sẽ thấy mình đơn giản chỉ là từ PagesController chúng ta gọi view about me, vậy thì nếu từ trong PagesController ta có dữ liệu nào đó và muốn gửi ra ngoài view thì phải làm thế nào ?
Dưới đây mình sẽ chỉ ra 1 số cách giúp bạn đưa dữ liệu ra ngoài view từ controller.
Cách 1 : Đưa dữ liệu đơn ra ngoài view với phương thức with
Sửa lại function aboutme() trong controller 1 chút như sau :
Ở đoạn code trên, với phương thức with bạn đã gửi dữ liệu với key là name và value là $data ra ngoài view. Tiếp đến chúng ta sẽ sửa lại file aboutme.blade.php như sau để bắt lấy dữ liệu gửi ra từ controller như sau :
F5 lại trình duyệt bạn sẽ được kết quả như sau :
laravel-5-aboutme-1
gửi dữ liệu đơn ra view với with
Awesome !  thật tuyệt vời phải ko nào ? Laravel đã tự động parse key là name thành biến $name khi ra ngoài view, và với cách viết {{ $name }}, Laravel đã echo dữ liệu “My name is Hieu” ra ngoài trình duyệt cho bạn, thay vì bạn phải viết như thế này <?php echo $name ?>. Đó chưa phải là toàn bộ công dụng của dấu {{ }} thần thánh này đâu, bạn sẽ hiểu nhiều hơn về công dụng tuyệt với của nó khi bạn có cơ hội gặp phải sau này :)
Cách 2 : Đưa nhiều dữ liệu ra ngoài view với phương thức with
Sửa lại function aboutme() trong PagesController.php 1 tí như sau :
Sửa lại file aboutme.blade.php như sau :
F5 lại trình duyệt và xem kết quả nhé :)
Cách 3 : Gửi dữ liệu ra ngoài view không dùng từ khóa with
Sửa function aboutme() thành như sau :
Giữ nguyên file aboutme.blade.php, không chỉnh sửa gì thêm và F5 lại trình duyệt, xem kết quả nhé.
Kết thúc bài viết đưa dữ liệu ra view trong Laravel 5. Bạn thấy đó, Laravel thật tuyệt vời phải không nào? chi riêng cái việc gửi dữ liệu ra ngoài view và cách view hiển thị dữ liệu thôi mà bạn đã thấy laravel cũng cấp cho bạn đầy đủ tùy chọn “màu mè hoa lá cành” đến mức nào. Mình dừng bài viết ở đây, chúc các bạn học tốt. Nếu có bất kỳ thắc mắc hay góp ý thì để lại comment bên dưới nhé, Thân !
Nguồn : kungfuphp.com

Comments

Popular Posts