Solución:
@yield se utiliza principalmente para definir una sección en un diseño. Cuando ese diseño se extiende con @extends, puede definir lo que va en esa sección con la directiva @section en sus vistas.
El diseño generalmente contiene su HTML, encabezado, cuerpo, encabezado y pies de página. Usted define un área (@yield) dentro del diseño en el que sus páginas que están extendiendo la plantilla colocarán su contenido.
En su plantilla maestra, define el área. Por ejemplo:
<body>
@yield('content')
</body>
Digamos que su página de inicio extiende ese diseño
@extends('layouts.app')
@section('content')
// home page content here
@endsection
Cualquier HTML que defina en la sección de contenido en la vista de su página de inicio en la sección ‘contenido’ se inyectará en el diseño que se extendió en ese lugar.
@include se usa para HTML reutilizable al igual que un PHP include estándar. No tiene esa relación padre / hijo como @yield y @section.
Recomiendo encarecidamente leer la documentación sobre las plantillas Blade en el sitio de Laravel para obtener una descripción general más completa
https://laravel.com/docs/5.0/templates
@incluir y @producir Hay dos tipos de operaciones completamente diferentes para importar código al archivo actual.
@incluir – importar el contenido de un archivo separado en el archivo actual en la ubicación en la que está colocado. es decir:
Archivo de diseño:
< some html or other script >
@include('include.file_name') // "include." indicates the subdirectory that the file is in
< more html or other script >
Incluir archivo (un archivo blade con un bloque de código):
< some cool code here >
Luego, el contenido de ‘file_name’ (también un archivo blade) se importa en el lugar donde se encuentra la directiva @include.
@producir importa código de una “sección” en el archivo secundario (el archivo blade “ver”), es decir:
Archivo de diseño:
< some html or other script >
@yield('needed_section_name')
< more html or other script >
La siguiente sección es necesaria en el archivo blade “ver” que está configurado para “extender” ese archivo de diseño.
“Ver” archivo blade:
@extends('layout.file_name')
... code as neeeded
@section('needed_section_name')
< some cool code here >
@stop
...
more code as needed
Ahora, el archivo de diseño se importará en la sección de código que coincida con el nombre utilizado.
Más sobre el tema aquí …
La diferencia entre @yield
y @include
así es como los usas.
Si tiene un tipo de contenido estático, como una barra de navegación, esta parte de la página siempre estará en el mismo lugar en el diseño. Cuando usas @include
en el archivo de diseño, la barra de navegación se colocará una vez por diseño. Pero si usas @yield
se le obligará a hacer un @section
de la barra de navegación en cada página que @extends
el diseño.
@yield
es, por otro lado, una mejor opción cuando el contenido está cambiando en todas las páginas pero aún desea utilizar el mismo diseño en todas partes. Si utiliza @include
tendrá que hacer un nuevo diseño para cada página, debido a la diferencia de contenido.