1. Kiến thức chung

BLADE TEMPLATING TRONG LARAVEL

maxresdefault

1. Giới thiệu

- Đầu tiên chúng ta cần biết Template là gì trước đã :P 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.

- Hiện nay có khá nhiều template engine như Smarty, XiTemplate, TinyButStrong, Blade... => Nhưng hôm nay chúng ta chỉ tìm hiểu Blade Engine của Laravel thôi nhé !!

- Blade là một templating engine đơn giản nhưng mạnh mẽ được cung cấp cùng với Laravel. Tất cả các Blade view đều được biên dịch thành mã PHP thuần và được đưa vào bộ nhớ đệm cho tới khi chúng bị sửa đổi. Các tập tin Blade view sử dụng phần mở rộng là .blade.php và thường được lưu trữ trong thư mục resources/views   

2. Tìm hiểu qua về cách sử dụng

- Cách xuất data ra View:

 {{ và }} dùng để wrap những phần mà bạn muốn PHP xuất ra view. ví dụ {{ $variable }} thì tương đương với <?= $variable ?> . Nhưng cũng có điểm khác biệt khi sử dụng blade là, Blade tự động escape cho chúng ta. Có nghĩa {{ $variable }} chính xác hơn là giống với <?= htmlentities($variable) ?> Nếu chúng ta muốn echo mà không escape thì có thể gọi {{!! $variable !!} và blade sẽ không escape.

- Định nghĩa các thành phần trong View bằng @section, @show và @yield:

 + Ta có đoạn code mẫu như sau:

<html>
       <head>
              <title> My site | yield('title', 'Home Page') </title>
       </head>
       <body>
              <div class="container">
                      @yield('content')
              </div>
              @section('footerScripts')
                      <script src='app.js'></script>
              @show
       </body>
</html>

+ Sau đây mình sẽ giải thích những cái từ đằng sau chữ @ kia nhé:

-     Blade cung cấp cho ta một cấu trúc để có thể kế thừa, chỉnh sửa hoặc include các view khác nhau.

-     @yield(‘content’) : không có gía trị default, có nghĩa là nếu lớp con không thực hiện extend phần content thì sẽ không có gì hiển thị cả

-     yield(‘title’, ‘Home page’): ở đây chúng ta thiết lập giá trị mặc định cho title là Home page, tuy nhiên lớp con có thể overwrite, và giá trị Home page chỉ xuất hiện khi lớp con không thực hiện extends phần title

-     @section … @show thì định nghĩa cả giá trị default và cho phép lớp con extends giá trị đó. Chúng ta có thể cho footerScripts include file app.js bằng chỉ lệnh @parent

-     Chúng ta sẽ extend view trên:

-      // resources/views/dashboard.blade.php
-      @extends('layouts.master')
-      
-      @section('title', 'Dashboard') // overwrite `Home Page`
-      
-      @section('content')
-      Welcome to your Dashboard
-      @endsection
-      
-      @section('footerScripts')
-        @parent
-        <script src='dashboard.js'></script>
-      @endsection


-     @extends('layouts.master’): định nghĩa views này sẽ được kế thừa từ views layouts.master

-     @section('title', 'Dashboard'): Page này sẽ có title là Dashboard thay vì là Home page, default của views layouts.master đã bị overwrite.

3. Kết luận

- Blade có rất nhiều thứ hay, để hiểu rõ ràng được nó thì chúng ta cần hiểu qua những thứ cơ bản này trước đã, dần dần tôi sẽ giới thiệu cho các bạn nhé !

Từ khóa: vtcc_intern_9, kiến thức chung