Laravel View Composer

Laravel Blade View Stacks

Hi các bạn,

View Stacks là một cái feature khá hay đem lại cho chúng ta khi sử dụng Blade View. Nay mình muốn giới thiệu qua cho các bạn về cái này.

Với nó, ta có thể giải quyết kha khá vấn đề về append more css/js cho cái template của chúng ta.

1/ Sử dụng Laravel Blade View Stacks

1.1/ Define Stack

Ở blade view template của parent, ta sẽ define những stack cần thiết tại các vị trí nhất định. Đơn giản như sau:

@stack('stack_name')

Example cho 1 template:

<html>
<head>
....
    @stack('styles')
</head>
<body>
...

    @stack('scripts')
</body>
</html>

1.2/ Push code to Stack

Để đẩy code vào stack, ta sẽ sử dụng câu lệnh như sau tại blade view:

@push('scripts')
    <script>...</script>
@endpush

Ví dụ:

@push('scripts')
    <script src="..."></script>
    <script>
    ....
    </script>
@endpush

Ví dụ thực tiễn, mình cần import css và js của select2 và init toàn bộ select2 trong page hiện tại của mình cần, mình sẽ làm như sau:

@push('styles')
<link href="vendor/assets/select2/select2.min.css" rel="stylesheet" />
@endpush

@push('scripts')
<script src="vendor/assets/select2/select2.min.js"></script>
<script>
$(document).ready(function() {
    $("select").select2();
});
</script>
@endpush

Ngoài ra các bạn cũng thể prepend vào Stack, đưa code của các bạn lên đầu tiên.

@prepend('scripts')
    // code trong đây sẽ dc đẩy lên đầu stack
@endprepend

2/ So sánh Laravel Blade View Stacks và Section

Có nhiều bạn sẽ hỏi, tại sao ko xài yield và bỏ code vào section cho lẹ? Vâng, các bạn làm kiểu vậy cũng dc, nhưng View Stack nó có định nghĩa khác so với Section.

  • Section & Yield:
    • Yield dùng để define 1 block tại 1 vị trí nào đó trên parent template.
    • Child template sẽ extend từ parent template và chỉ sử dụng 1 lần section duy nhất, nhiều lần sẽ bị override.
  • View Stack:
    • Cũng như yield, define tại 1 vị trí tại parent template
    • Có thể push nhiều lần vào cái stacks.
    • Dynamically push, ko cần thiết fải child template mới dc push, template mà dc include vào cũng có thể push vào dc.

Vậy nên dùng View Stack cho trường hợp append thêm css/js là quá ngon và đẹp rồi 😀

3/ Kết luận về Laravel Blade View Stacks

Hãy cho View Stack một cơ hội thể hiện thay vì Section và Yield. Đôi khi bạn đã lạm dụng nó quá đấy 😀

More references: https://laravel.com/docs/5.8/blade#stacks

Laravel Information: https://sethphat.com/sp-category/lap-trinh/laravel-5-php

Cám ơn các bạn đã theo dõi!

facebook
google+
Seth Phát

Seth Phát

Mình là Phát - biệt danh Seth Phát. Hiện đang là một Sr. Full-Stack Engineer. Mình là một người yêu thích và đam mê lập trình và hiện tại đang theo về phần Web là chủ yếu. Mạnh Back-end và khá Front-end, vẫn đang theo đều cả 2 :v. Còn gì bằng khi được làm những thứ mà mình yêu thích, đam mê ;)

Leave a Reply

Your email address will not be published. Required fields are marked *

Bình luận qua Facebook