What’s the difference between Laravel’s @yield and @include?

I’m learning Laravel (starting at version 5.3) and those two look very much alike, the only difference I know is that @include inject parent’s variables and can also send other variables.

  • What’s the difference between @yield and @include?
  • When should I use @yield?
  • When should I use @include?
Add Comment
1 Answer(s)

@yield is mainly used to define a section in a layout. When that layout is extended with @extends, you can define what goes in that section with the @section directive in your views.

The layout usually contains your HTML, head, body, header and footers. You define an area (@yield) within the layout that your pages which are extending the template will put their content into.

In your master template you define the area. For example:


Lets say your home page extends that layout


     // home page content here

Any HTML you define in the content section on your homepage view in the ‘content’ section will be injected into the layout it extended in that spot.

@include is used for reusable HTML just like a standard PHP include. It does not have that parent/child relationship like @yield and @section.

I highly suggest reading the documentation on Blade Templates on the Laravel site for a more comprehensive overview


Answered on June 26, 2018.
Add Comment

Your Answer

By posting your answer, you agree to the privacy policy and terms of service.