web-dev-qa-db-fra.com

Quelle est la différence entre Section et Stack in Blade?

Nous pouvons utiliser un section pour définir du HTML puis yield ailleurs.

Alors pourquoi avons-nous des piles? https://laravel.com/docs/5.2/blade#stacks

Il fait exactement la même chose avec différents mots clés, mais a moins d'options (pas d'héritage).

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

<head>
    <!-- Head Contents -->

    @stack('scripts')
</head>

Peut être fait avec la section:

@section('scripts')
    <script src="/example.js"></script>
@endsection

<head>
    <!-- Head Contents -->

    @yield('scripts')
</head>
23
Webinan

Je me trompe peut-être, mais la différence n'est pas seulement sémantique, mais aussi dans le comportement. Avec @ Push vous ajoutez autant de fois que nécessaire à une pile, tandis que (par défaut) vous pouvez remplir @ section uniquement ne fois dans vos vues. Dans certaines situations, cela est utile lorsque vous devez ajouter du contenu à partir de différents emplacements dans vos fichiers de modèle ou en boucles:

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>

résultat:

    <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>
35
macghriogair

La pile est en quelque sorte appropriée pour les scripts, avec la pile que vous pouvez ajouter autant que vous le souhaitez.

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

Ajouter…

<head>
<!-- Head Contents -->

@stack('scripts')
</head>

Comme vous pouvez le voir, la pile de scripts sera ajoutée sous la balise script de example.js. Vous pouvez donc pousser des scripts spéciaux pour chaque vue.

5
Hos Mercury