laravel - index - ¿Cuál es la diferencia entre Section y Stack en Blade?
laravel download (2)
La pila es de alguna manera apropiada para los scripts, con la pila se puede anexar todo lo que necesite.
@push(''scripts'')
<script src="/example.js"></script>
@endpush
Adjuntar …
<head>
<!-- Head Contents -->
@stack(''scripts'')
</head>
Como puede ver, la pila de scripts se agregará a la etiqueta de script de example.js. Así que puedes empujar scripts especiales para cada vista.
Podemos usar una section
para definir algo de HTML y luego yield
en otro lugar.
Entonces, ¿por qué tenemos pilas? https://laravel.com/docs/5.2/blade#stacks
Está haciendo exactamente lo mismo con diferentes palabras clave, pero tiene menos opciones (Sin herencia).
@push(''scripts'')
<script src="/example.js"></script>
@endpush
<head>
<!-- Head Contents -->
@stack(''scripts'')
</head>
Se puede hacer con la sección:
@section(''scripts'')
<script src="/example.js"></script>
@endsection
<head>
<!-- Head Contents -->
@yield(''scripts'')
</head>
Puede que me equivoque, pero la diferencia no es solo semántica, sino también en el comportamiento. Con @push, usted agrega tantas veces como sea necesario a una pila, mientras que (de manera predeterminada) puede llenar @section solo una vez en sus vistas. En algunas situaciones, esto es útil cuando necesita agregar contenido de diferentes ubicaciones a través de sus archivos de plantilla o en bucles:
index.blade.php:
@extends(''master'')
...
@for ($i = 0; $i < 3; $i++)
@push(''test-push'')
<script type="text/javascript">
// Push {{ $i }}
</script>
@endpush
@section(''test-section'')
<script type="text/javascript">
// Section {{ $i }}
</script>
@endsection
@endfor
master.blade.php
@stack(''test-push'')
@yield(''test-section'')
</body>
resultado:
<script type="text/javascript">
// Push 0
</script>
<script type="text/javascript">
// Push 1
</script>
<script type="text/javascript">
// Push 2
</script>
<script type="text/javascript">
// Section 0
</script>
</body>