Laravelのビューファイルのを読んでいた時にslotが出てきたので、
どうやって使っているのかな〜と思ったのでメモします。
元々のファイルはこんな感じです↓ ※内容改変しました。
resouces/views/sample.blade.php
<form>
(中略)
<div class="wrapper">
@component('components.sample') //ここでコンポーネント側に渡している
@slot('id', 'sample-id')
@slot('name', 'sample-name')
@isset($sample-value)
@slot('olds', $sample-name)
@endisset
@endcomponent
</div>
(中略)
</form>
実際のコンポーネントはこちらです↓
resouces/views/components/sample.blade.php
<input type="text" id={{ $id }} placeholder="ここに何か書いてください"/> //$idにsample-idが入る
<input type="hidden" name="{{ $name }}" value="{{ $old }}" /> //$idにsample-namが、戻り値があれば$sample-nameの値が入る
@slot の第一引数を変数名として、第二引数に実際の中身をコンポーネントに渡しているということがわかりました。
使い回ししたい箇所を共通化し、値を渡していくことがやりたいことなのであれば、@slotを使わなくても、
@include('components.sample',[ 'id' => 'sample-id'])
のようにも記述できるわけなので、現時点ではslot(およびcomponent)をあえて利用するメリットが見えてこなかったです。
尚、ネットで検索すると、
@slot('id')
sample-id
@endslot
のようにendを使って挟むサンプルコードが多かったですが、ない方が見た目はスッキリはするなと思いました。
コメント