What is the difference between Section and Stack in Blade?

前端 未结 3 1851
忘了有多久
忘了有多久 2021-02-03 20:50

We can use a section to define some HTML and then yield that somewhere else.

So why do we have stacks? https://laravel.com/docs/5.2/blade#sta

相关标签:
3条回答
  • 2021-02-03 21:35

    I might be mistaken, but the difference is not only semantically, but in behaviour as well. With @push you append as many times as needed to a stack, while (by default) you may fill @section only once in your views. In some situations this comes in handy when you need to add content from different locations across your template files or in loops:

    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>
    

    result:

        <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>
    
    0 讨论(0)
  • 2021-02-03 21:36

    Stack is someway appropriate for scripts , with stack you can Append as much as you need .

    @push('scripts')
        <script src="/example.js"></script>
     @endpush
    

    Append …

    <head>
    <!-- Head Contents -->
    
    @stack('scripts')
    </head>
    

    As you can see the scripts stack will be appended under the script tag of example.js . So you can push special scripts for each view .

    0 讨论(0)
  • 2021-02-03 21:37
    @section - You can add your js css once.
    @stack   - Push js css into stack (page) many times.
    
    0 讨论(0)
提交回复
热议问题