Laravel Blade Template

0

Blade là templating engine đơn giản nhưng mạnh mẽ được cung cấp cùng với Laravel. Không giống như các engine khác, Blade không hạn chế bạn sử dụng code PHP trong View của bạn.

Trên thực tế, tất cả các Blade views được biên dịch thành mã PHP đơn giản và được lưu vào bộ đệm cho đến khi chúng được sửa đổi, điều đó cũng có nghĩa là Blade tự làm tất cả những việc cần thiết để có thể chạy views cho ứng dụng của bạn.

File Blade Template sử dụng phần mở rộng tệp .blade.php và thường được lưu trữ trong thư mục resources/views.

1. Echo data 

Nếu bạn muốn hiển thị bất kỳ biến nào trong Blade View, bạn có thể thực hiện nó bằng cách bọc biến trong cặp dấu ngoặc nhọn.

{{ $variable }}

Cú pháp trên tương đương với <?php echo $variable ?> Trong PHP

2. Đặt giá trị mặc định

{{ $varialbe ?? 'text' }}

Nếu biến $variable không tồn tại thì sẽ in ra chữ  text và ngược lại.

3. Escape, Unescaped  mã HTML trong Blade Template

Theo mặc định khi sử dụng {{ }} để in dữ liệu trong Blade thì dữ liệu được tự động gửi qua chức năng htmlentity của PHP để ngăn chặn các cuộc tấn công XSS. Tuy nhiên sẽ có trường hợp bạn cần xuất nguyên bản mã html như khi in ra nội dung bài viết chẳng hạn. Lúc này chúng ta sử dụng dạng {!! !!}

Chúng ta xét ví dụ dưới đây để hiểu rõ hơn:

a. Sử dụng {{ }} escape mã html

{{ "<strong>escape data</strong>" }}

Kết quả hiển thị:

escape

* Lưu ý: Cần chú ý khi sử dụng {!! !!} vì sẽ mất đi lớp bảo vệ chống XSS với cách in này

4. if, else, else if trong Blade Template

Blade cung cấp các lệnh @if, @elseif, @else và @endif để xây dựng câu lệnh if, else. Các lệnh này hoạt động giống như trong PHP bình thường

@if (count($records) === 1)
    I have one record!
@elseif (count($records) > 1)
    I have multiple records!
@else
    I don't have any records!
@endif

5. isset, empty

Ngoài if else, các lệnh @isset và @empty có thể được sử dụng làm các phím tắt tương ứng với các hàm PHP bình thường

@isset($records)
    // $records is defined and is not null...
@endisset

@empty($records)
    // $records is "empty"...
@endempty

6. Vòng lặp trong Blade Template

Ngoài các câu lệnh có điều kiện, Blade cung cấp các chỉ thị đơn giản để làm việc với các cấu trúc vòng lặp của PHP

@for ($i = 0; $i < 10; $i++)
    The current value is {{ $i }}
@endfor

@foreach ($users as $user)
    <p>This is user {{ $user->id }}</p>
@endforeach

@forelse ($users as $user)
    <li>{{ $user->name }}</li>
@empty
    <p>No users</p>
@endforelse

@while (true)
    <p>I'm looping forever.</p>
@endwhile

* Lưu ý: forelse tương tự foreach tuy nhiên khác một chút là nếu không có dữ liệu sẽ hiển thị nội dung sau @empty

7. Switch case

Switch  có thể được xây dựng bằng cách sử dụng các lệnh @switch, @case, @break, @default và @endswitch:

@switch($i)
    @case(1)
        First case...
        @break

    @case(2)
        Second case...
        @break

    @default
        Default case...
@endswitch

8. Check login user, guest

Các chỉ thị @auth và @guest có thể được sử dụng để nhanh chóng xác định xem người dùng hiện tại là login user hay khách:

@auth
    // The user is authenticated...
@endauth

@guest
    // The user is not authenticated...
@endguest

9. Chèn code PHP trong Blade Template

Trong một số trường hợp, bạn cần nhúng mã PHP vào View của bạn. Bạn có thể sử dụng chỉ thị Blade @php để thực thi một khối PHP đơn giản trong View của bạn:

@php
    //php code
@endphp

10. Include file view khác

Công cụ mẫu Blade cung cấp chỉ thị @include (‘viewname’) để bao include các file view khác. View con sẽ có tất cả các biến có sẵn cho View cha.

@include('shared.errors')

Trong đó:

  • shared : Thư mục chứa file view (/resources/views/shared)
  • errors: Là tên view (/resources/views/shared/errors.blade.php)

Bạn cũng có thể truyền một mảng dữ liệu bổ sung sang cho View được include:

@include('view.name', ['some' => 'data'])

Tuy nhiên nếu bạn cố gắng @include một file view không tồn tại, Laravel sẽ đưa ra lỗi Vì vậy thay vì sử dụng @include chúng ta nên dùng @includeIf:

@includeIf('view.name')

@includeIf('view.name', ['some' => 'data'])
Leave A Reply

Your email address will not be published.