Laravel Blade-avantage de @slot / @ component vs @include?

Laravel 5.4 Blade a présenté le concept de composants & slots - mais je ne vois pas ce qu'ils ajoutent par rapport à la traditionnelle @include. Ce que je comprends, avec le composant/slots, vous faire:

Dans le modèle de composant-tpl.lame.php:

<div class='container'>
  <h1>{{$slot1}}</h1>
  <h2>{{$slot2}}</h2>
</div>

en utilisant des fentes dans le modèle de page, vous faites:

@component('component-tpl')
  @slot('slot1')
    The content of Slot 1
  @endslot
  @slot('slot2')
    The content of Slot 2
  @endslot
@endcomponent

Ce que la fonctionnalité ne fournissant plus les plus âgés:

@include('component-tpl',['slot1'=>'The content of Slot 1',
'slot2'=>"The content of Slot 2"])

en utilisant le même 'component-tpl.lame.modèle de lame de php?

Ce que je suis manquant? Merci pour toutes les suggestions.

Chris

20
demandé sur ChrisNY 2017-05-27 05:21:12

3 réponses

comme indiqué, il n'y a pas de différence fonctionnelle, mais une utilisation prudente des deux peut vous donner des fichiers de lame plus propres.

si une fente peut contenir du HTML, alors l'utilisation d'un composant donnera une syntaxe plus claire dans vos fichiers blade.

@component('test')
   <strong>This text has html</strong>
@endcomponent

contre

@include('test', ['slot' => '<strong>This text has HTML</strong>'])

de même, si un composant n'a pas de slots, alors une inclusion peut être préférée:

@include('test')

contre

@component('test')
@endcomponent
18
répondu Rick 2017-12-22 09:06:37

je pense que j'ai trouvé une autre différence cruciale. Par exemple, de la documentation pour 5.4:

pour autant que je puisse dire, les composants ont une portée différente d'une vue contenant et donc les variables disponibles pour la vue mère ne sont pas disponibles au sein de la composante. Vous avez besoin de passer une variable à un composant comme ceci:

@component('alert', ['foo' => 'bar'])
@endcomponent

Cette discussion est liée à ce problème: utilisez les variables à L'intérieur des Markdown Mailables

5
répondu DavidHyogo 2018-01-25 08:22:36

documentation dit:

les composants et les fentes offrent des avantages similaires aux sections et les mises en page; cependant, certains peuvent trouver le modèle mental des composants et les machines à sous sont plus faciles à comprendre.

4
répondu Denis 2017-05-27 02:29:48