section
を使用してHTMLを定義し、yield
を別の場所で定義できます。
なぜスタックがあるのですか? 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>
私は間違っているかもしれませんが、違いは意味的にだけでなく、行動にもあります。 @ Push you appendスタックに必要な回数だけ、(デフォルトでは)@ section only onceビューで。状況によっては、テンプレートファイル全体またはループ内の異なる場所からコンテンツを追加する必要がある場合に便利です。
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>
スタックは何らかの形でスクリプトに適切であり、スタックを必要なだけ追加できます。
@Push('scripts')
<script src="/example.js"></script>
@endpush
追加…
<head>
<!-- Head Contents -->
@stack('scripts')
</head>
ご覧のとおり、スクリプトスタックはexample.jsのscriptタグの下に追加されます。したがって、ビューごとに特別なスクリプトをプッシュできます。