I. Toàn tập Blade template Laravel (ok)

Chuẩn bị cần cho Blade template

  • Ý tưởng là tạo 1 template, dùng chung cho các trang news và các trang product.

  • Ta cần tạo:

    • Các file include dùng chung cho các trang: header, footer.

    • File template dành cho trang news và trang product.

    • 2 trang hiển thị (Views) cho trang news và product.

  • Tất cả sẽ được chứa trong /resources/views/, ta tổ chức các file như sau:

myproject

  • resources

    • views

      • includes

      • templates

      • welcome.blade.php news.blade.php

      • welcome.blade.php product.blade.php

Click vào dấu [+] để xem cấu trúc.

Thực hiện

Lần lượt tạo các file trên với nội dung như sau:

Chú ý là chỉ làm mẫu cho trang News thôi, còn trang Product thì các bạn dựa vào trang News để làm thêm nhé.

header.blade.php

footer.blade.php

tpl_default.blade.php

news.blade.php

Kết nối trang Views và Templates

  • Tạo liên kết kết nối trong Template tpl_default.blade.php bằng @yield như sau:

  • tpl_default.blade.php

    • @yield có thể coi như lệnh đặt chỗ trước, sẽ lấy những phần ở nơi khác gắn vào đây.

  • news.blade.php

    • @extends cho biết sẽ kết nối tới file nào (ở đây là kết nối tới file tpl_default.blade.php trong thư mục templates)

      • templates: là thư mục /resource/views/templates

      • tpl_default: là tên file tpl_default.blade.php

    • Nội dung bên trong @section sẽ được gắn vào @yield của template tpl_default.blade.php với từ khóa nhận dạng là content.

  • Hiển thị trình duyệt

  • Tiêu đề từ template

  • Tin trong ngày

  • Nội dung siêu ngắn cho tin tức mới đây!!!

    • Ta thấy nội dung news.blade.php đã được sử dụng template tpl_default.blade.php

    • Nếu xem source (CTRL + U) lúc này thì bạn sẽ thấy nội dung như sau:

Kết nối nhiều nội dung từ Views vào Templates

  • Dựa vào @yield@section ta có thể tạo nhiều kết nối như sau:

  • tpl_default.blade.php

    • @yield('css') dùng để chứa các liên kết css.

    • @yield('js') dùng để chứa các liên kết js.

  • news.blade.php

    • Nội dung bên trong @section('css') sẽ được gọi bằng lệnh @yield('css') bên file template tpl_default.blade.php, tương tự vậy, nội dung bên trong @section('js') sẽ được gọi bằng lệnh @yield('js').

    • Với cách sử dụng như trên có hiệu quả ở chỗ, khi load trang News, thì nội dung CSS và JS của riêng trang news sẽ được gọi mà không làm ảnh hưởng các trang khác.

    • Khi này xem source (CTRL + U) thì bạn sẽ thấy nội dung như sau:

Truyền giá trị từ trang Views vào Template

  • Giá trị truyền từ news.blade.php sang tpl_default.blade.php dưới dạng mảng, và được viết bên trong @extends, lần lượt viết như sau:

  • news.blade.php

  • Truyền giá trị pageId.

  • tpl_default.blade.php

  • Nhận giá trị pageId.

  • Cách gọi pageId như trên sẽ tiện lợi khi ta khai báo pageId từ mỗi trang riêng biệt, các trang khác nhau sẽ không ảnh hưởng nhau.

  • Hiển thị trình duyệt

  • Tiêu đề từ template

  • Tin trong ngày

  • Nội dung siêu ngắn cho tin tức mới đây!!!

    • Nếu xem source (CTRL + U) lúc này thì bạn sẽ thấy nội dung như sau:

Last updated

Was this helpful?