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
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
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
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.