30/09/2018, 23:53

Blade Template in Laravel 5.x

Mọi người cho em hỏi sự khác nhau giữa @include@extend trong laravel 5.2 là gì với ạ.

Quân Cao viết 01:58 ngày 01/10/2018

extend dùng khi bạn áp dụng layout.
còn include dùng khi bạn muốn đưa đoạn mã khác vào trang đó

Quân viết 02:05 ngày 01/10/2018

Tên nói lên tất cả, extends là mở rộng, include là bao gồm, với extend thì child sẽ tương tự parent từ đầu đến đít có 1 số thay đổi cho phù hợp, còn includes là theo kiểu sử dụng, includes chỉ là 1 phần của trang chứa, có thể dùng ở bất cứ đoạn nào của trang chứa

Luong Nguyen viết 02:02 ngày 01/10/2018

Khác nhau là:

  • @include: thì mình muốn mở rộng phần code nào thì mở rộng.
  • @extend: phần mở rộng được quy định.
    Ví dụ:
  • File A @include B: thì ngoài code ở B ra, mình thích thêm gì vào A cũng được.
  • File A @extend B: A và B giống nhau, phần mở rộng thêm của A sẽ được quy định bởi @yield(‘extend’) ở trong B
    Với các file kết cấu kiểu nhiều component, thì nên dùng include. Ví dụ file layout.blade.php, sẽ gồm các component là header.blade.php, footer.blade.php, … thì nên dùng @include để include code của các file này vào file layout.blade.php.
    Với các file cần sự kế thừa, các component giống hệt nhau thì mình dùng @extend. Ví dụ file about.blade.php, các component nó giống với layout.blade.php, chỉ mong muốn mở rộng phần content. Thì ở file layout.blade.php quy định 1 @yield(‘content’). Và ở file about.blade.php, extend(‘layout’), thêm phần khác biệt ở @section(‘content’)
Nguyễn Đức Hoàng viết 01:59 ngày 01/10/2018

Thì ở file layout.blade.php quy định 1 @yield(‘content’). Và ở file about.blade.php, extend(‘layout’), thêm phần khác biệt ở @section(‘content’)

Theo mình nên dùng @section('content') ... @show thay cho @yield('content') . Vi yield xử dụng ở những đoạn ngắn thì hơn, ví dụ @yield('title')

Dark.Hades viết 02:07 ngày 01/10/2018

Bạn không khai báo yield thì sao dùng được section

Nguyễn Đức Hoàng viết 02:01 ngày 01/10/2018

Khai báo cú pháp:

@section()
Cái này mới thì phải, Dùng thay thế @yield() khi sau này chúng ta muốn chèn cả đoạn dài. VD: div Content. Cú pháp này có thể ghi nối, còn @yield() là ghi đè luôn.
@show

thay cú pháp:

@yield()

Còn cú pháp chèn nội dung là:

@section()

@endsection

Bài liên quan
0