LaravelVietnam / laravel-solutions

A Q&A board for helping members
27 stars 4 forks source link

[Blade] Cách đóng directive @section (@show / @stop / @endsection) #24

Open phamquocbuu opened 8 years ago

phamquocbuu commented 8 years ago

Trong docs của Laravel có viết @show directive và @endsection directive, mà không thấy nói rõ cách dùng, sau khi tìm hiểu mình viết lại để các bạn mới học đỡ rối hơn.

Sự thay đổi qua các version

Theo như issuse của Laravel, từ Laravel 3, @endsection được thay thế bằng @stop; và @yieldSection được thay bằng @show.

Các dùng

Khi bạn viết layout (một view sẽ được kế thừa), trong đó có thể sẽ dùng @section, để đóng @section directive trong layout, ta dùng @stop:

{{-- layout.blade.php }}
@section('abc')
    <h1>ABC</h1>
@show

Trong view, khi override @section, mình đóng lại bằng @stop:

{{-- about.blade.php }}
@extends('layout')
@section('abc')
    <h1>DEF</h1>
@stop

Kết quả là

<h1>DEF</h1>

Nếu trong view đóng @section bằng @show:

{{-- about.blade.php }}
@extends('layout')
@section('abc')
    <h1>DEF</h1>
@show

Kết quả là

<h1>DEF</h1>
<h1>DEF</h1>