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:

<body>
     @yield('content')
</body>

Lets say your home page extends that layout

@extends('layouts.app')

@section('content')
     // home page content here
@endsection

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

https://laravel.com/docs/5.0/templates

Answered on June 26, 2018.
Add Comment

Your Answer

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