switch index for ciclo laravel blade

index - laravel blade variables



Laravel-¿Diferencia entre @yield y @section? (5)

Básicamente el yield(''content'') es un marcador. Por ejemplo, en la etiqueta, si coloca un yield(''content'') , el dicho de esta sección tiene el nombre del contenido y, por cierto, puede nombrar dentro del paréntesis todo lo que desee. no tiene que ser contenido Puede ser rendimiento (''dentro''). o cualquier cosa que quieras.

Y luego, en la página secundaria donde desea importar html de su página de diseño, simplemente diga la sección (''name of the section'') .
por ejemplo, si ha marcado su encabezado en la página de diseño como rendimiento (''my_head_band'') <- o cualquier otra cosa que desee, entonces en su página secundaria solo dice @section(''my_head_band'') .

Esto importaría el encabezado de la página de diseño en su página secundaria. viceversa con la sección de su cuerpo, que en este caso se denominó contenido.

Espero que esto ayude.

Desde los documentos de Laravel , puede incluir "secciones" dentro de los diseños utilizando dos métodos:

<html> <body> @section(''sidebar'') This is the master sidebar. @show <div class="container"> @yield(''content'') </div> </body> </html>

Dado que @yield también puede pasar algo de contenido predeterminado utilizando @yield(''section'', ''Default Content'') , ¿es @yield solo una abreviatura para una @section que no usa @parent ?

@section <!-- Nothing here --> @show

¿Qué otras diferencias hay?


Esta línea elimina la confusión: "Tenga en cuenta que las vistas que extienden un diseño Blade simplemente anulan las secciones del diseño. El contenido del diseño se puede incluir en una vista secundaria usando la directiva @parent en una sección".

Por lo tanto, si ya tiene una @section definida en el diseño maestro, se anulará a menos que especifique @parent dentro de la @parent del diseño @section .

Pero para @yield , siempre obtiene la sección del diseño secundario. Eso significa que siempre anula la parte @yield , incluso si tiene un valor predeterminado definido como @yield(''section'', ''Default Content'') .

Espero que eso aclare tu confusión. Déjame saber si tienes más preguntas. Gracias


Solo para agregar algo pequeño, @yield básicamente define una sección para ser inyectada overwriting los datos y también funciona si nuestra vista @extends la vista principal.

Ahora, cuando overwrite , reemplazamos una implementación completamente con una nueva implementación, como una empresa puede decidir cambiar / sobrescribir toda su tecnología si se da cuenta de que algo salió mal.

No debe confundirse con override


La respuesta más corta:

Utilice @yield en master si desea sobrescribir completamente los datos secundarios en el diseño maestro.

Use @section en master si desea usar datos maestros y secundarios juntos en child con @parent (O sobrescriba datos secundarios en el diseño maestro como @yield )


Respuesta corta : utilice siempre @yield menos que desee hacer algo más complicado y luego proporcionar una string predeterminada.

Respuesta larga : tanto @yield como @section .. @show se suelen sobrescribir de forma opcional cada vez que amplíe la plantilla blade. Todo lo que puedes hacer con @yield también se puede hacer con @section .. @show pero no al revés. Esto es lo que hacen:

@yield (''main'')

  • Puede ser reemplazado por @section (''main'') .. @endsection
  • Puede proporcionarse con una cadena por defecto pero no HTML! La cadena predeterminada se mostrará en la sub-hoja-plantilla cuando no se proporcione @section (''main'') .. @endsection .

@section (''main'') .. @show

  • Puede ser reemplazado por @section (''main'') .. @endsection
  • Se puede proporcionar con un código HTML predeterminado. El código HTML predeterminado se mostrará en la sub-hoja-plantilla cuando no se proporcione @section (''main'') .
  • Puede reemplazarse por @section (''main'') @ parent .. @endsection y además muestra el código HTML predeterminado.

Aquí algunos ejemplos: test.blade.php

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>Test</title> </head> <body> <h1>This is a test</h1> @yield(''mainA'') @yield(''mainB'', ''This is the alternative 1'') @yield(''mainC'', ''<p>This is the alternative 2</p>'') @yield(''mainD'', ''This is the alternative 3'') @section(''testA'') @show @section(''testB'') This is the alternative 4 @show @section(''testC'') <p>This is the alternative 5</p> @show @section(''testD'') <p>This is the alternative 6</p> @show </body> </html>

Aquí hay otro archivo llamado testA.blade.php que extiende el otro archivo con hoja:

@extends(''test'') @section(''mainD'') <div> <p>First replacement!</p> <hr> </div> @endsection @section(''testC'') <div> <p>Second replacement!</p> <hr> </div> @endsection @section(''testD'') @parent <div> <p>Additional content</p> <hr> </div> @endsection

Y ese es el resultado: