Trong bài viết trước hướng dẫn cách đưa dữ liệu ra view, mình có nói là sẽ giải thích kĩ hơn cho các bạn về tại sao mình lại đặt file view là aboutme.blade.php mà không phải là aboutme.php , bài hôm nay mình sẽ trả lời đó là vì mình cố tình làm vậy để các bạn làm quen với cách sử dụng template trong Laravel 5. Nếu bạn đặt tên file là view là aboutme.php thì bạn sẽ không thể sử dụng được template trong Laravel 5.

Vậy thì Template trong Laravel 5 là gì ?

Như bạn thấy, một trang web thông thường, các thành phần như header, footer, sidebar-left, sidebar-right,… thường bao gồm những nội dung cố định, không thay đổi. Chỉ có phần nội dung chính giữa là sẽ thay đổi theo từng trang. Vậy nên khi nhảy từ trang này qua trang khác, thay vì phải mất công tạo lại những thành phần cố định trên trong khi chỉ có nội dung chính giua là thay đổi, vậy thì tại sao chúng ta không nhóm toàn bộ các thành phần cố định đó lại. Và từ đó ý tưởng Template ra đời 🙂

Gợi ý xem : Khóa học Laravel 5 giá cực rẻ + tặng thêm mã giảm giá 40% + Hỗ trợ việc làm sau khi học xong

Template đó chính là 1 mẫu bố cục chung cho tất cả các trang có sử dụng lại những thành phần giống nhau mà không phải viết lại toàn bộ, từ đó trên mỗi trang, chỉ cần thay đổi ở một số nơi được chỉ định trên trang từ template.

Nói thì dài dòng vậy, thôi thì lấy ví dụ cho các bạn dễ hiểu.

Hướng dẫn sử dụng template trong Laravel 5 (hay còn gọi là blade)

Trong file routes.php, mình sẽ thêm 2 route mới gọi 2 trang contact và about như sau:

Tiếp đến, trong file PagesController.php, các bạn thêm 2 function mới là about() và contact() như dưới đây để gọi 2 view là about.blade.php và contact.blade.php

Tiếp theo, các bạn tạo 2 file view là about.blade.php và contact.blade.php đặt trong folder pages. Đồng thời tạo thư mục mới là templates, trong thư mục templates, tạo file master.blade.php dùng để làm template như hình dưới đây :

template trong laravel
tạo template trong laravel

Trong file master.blade.php, mình sẽ thiết kế một template có nội dung đơn giản như sau :

@yield(‘bat_ky_ten_nao’), đây là 1 phương thức của Laravel, nhằm nói cho các trang khác khi sử dụng template master.blade.php biết được rằng đây là phần sẽ đặt nội dung cần thay đổi.

Trong file about.blade.php và contact.blade.php sẽ có nội dung lần lượt như sau :

trang about.blade.php

trang contact.blade.php

Ở 2 trang trên, phương thức @extends(‘ten-template’), sẽ chỉ định template mà bạn cần sử dụng cho trang hiện hành của mình mà ở đây đó là templates.master .

Với phương thức @section(‘content’) , bạn sẽ đặt nội dung chỉ có trên trang hiện hành, ví dụ trên trang about sẽ là “Đây là trang about“, contact sẽ là “Đây là trang contact“. Cuối cùng kết thúc @section các bạn phải dùng phương thức @stop để đóng nội dung cần thay đổi lại.

Save lại 2 trang trên, sau đó các bạn chạy lần lượt trên trình duyệt

các bạn sẽ được các kết quả lần lượt như sau :

Hình 1 :

Trang view about

 

Hình 2:

Trang view contact

 

Ở hình 1 và hình 2, mình cố tình bật Kiểm tra phần tử trong trình duyệt chrome, để các bạn thấy rằng 2 trang view contact.blade.php và about.blade.php đều sử dụng chung <title>Đây là trang sử dụng Template</title> của template master.blade.php

Các bạn thấy đó, 2 trang view contact và about đã sử dụng lại thành phần chung của template, chỉ thay đổi những nội dung đặc biệt biệt chỉ có ở trên trang contact hoặc about mà không cần phải viết lại toàn bộ nội dung trên mỗi trang. Điều đó cho thấy lợi ích khi các bạn sử dụng template trong laravel 5. Ngoài ra các bạn có thể xem thêm chi tiết hơn về template trong Laravel 5 tại đây : http://laravel.com/docs/5.0/templates . Chúc các bạn học tốt. Thân !

 


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 !