我们可以使用section
来定义一些HTML,然后使用yield
来定义其他HTML。
那我们为什么要堆叠呢? https://laravel.com/docs/5.2/blade#stacks
它使用不同的关键字执行完全相同的操作,但选项较少(无继承)。
@push('scripts')
<script src="/example.js"></script>
@endpush
<head>
<!-- Head Contents -->
@stack('scripts')
</head>
可以使用以下部分完成:
@section('scripts')
<script src="/example.js"></script>
@endsection
<head>
<!-- Head Contents -->
@yield('scripts')
</head>
答案 0 :(得分:33)
我可能错了,但差异不仅在语义上,而且在行为上也是如此。 使用 @push ,您可以根据需要将追加多次添加到堆栈中,而(默认情况下)您可以只填写 @section 一次 在您的观看次数中。 在某些情况下,当您需要在模板文件或循环中添加来自不同位置的内容时,这会派上用场:
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>
结果:
<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>
答案 1 :(得分:4)
Stack非常适合脚本,堆栈可以根据需要添加。
@push('scripts')
<script src="/example.js"></script>
@endpush
追加......
<head>
<!-- Head Contents -->
@stack('scripts')
</head>
如您所见,脚本堆栈将附加在example.js的脚本标记下。因此,您可以为每个视图推送特殊脚本。
答案 2 :(得分:1)
@section - You can add your js css once.
@stack - Push js css into stack (page) many times.