PHPのコードを確認していて以下のようなコードの処理内容の確認。
@include('mrgrpcv::items.items', ['items' => $items])
通常@include
はbladeビュー(.blade.php)内で指定したビューを読み込むために使用される。
@include('ファイル名')
名前空間
@include('mrgrpcv::items.items)
のように、ここではファイル名の指定に名前空間が用いられている。
名前空間はServiceProviders.php
のboot
関数内で設定している。
public function boot()
{
$this->loadViewsFrom(__DIR__.'/../../views', 'mrgrpcv');
$this->publishes([
__DIR__.'/../../views' => resource_path('views/vendor/mrgrpcv'),
], 'mrgrpcv');
}
/../../views
を mrgrpcv
としている。
名前空間の後ろに続く、items.items
は、/../../views
フォルダ内の、itemsフォルダの、items.blade.phpファイルを指している。
第2引数
文献をあさってもなかなか記述が見つからないincludeの第2引数の役割は、類似したものとして、@component
の第2引数があげられる。
場合により、コンポーネントへ追加のデータを渡す必要が起きます。そのため、@componentディレクティブの第2引数で、データの配列が渡せます。全データはテンプレート中で変数として利用できます。
@component('alert', ['foo' => 'bar'])
...
@endcomponent
この第2引数['foo' => 'bar']
により、componentに対し、値bar
が格納された変数$foo
を渡している。
・['子に渡す変数名' => 渡すデータ]
▼実際のコード
上記に沿って、実際のコードを見ると、指定したビューファイルの変数$items
を、includeしたファイルの中で$items
という変数で使えるようにしている。
@include('ファイルパス', ['items' => $items])
名前が同じなのでわかりにくいが、$items = [1 ,2 ,3]
だとすると、
@include('ファイルパス', ['items' => [1, 2, 3] ])
と同じ処理になる。
@include('ファイルパス', ['items' => [1, 2, 3] ])
@foreach($items as $item)
<p>{{$item}}</p>
@endforeach
とすれば、画面には以下が表示される。
1
2
3
viewヘルパの場合
bladeの@include
や@component
と同じく、viewヘルパでも第2引数以降でデータを渡すことができる。
・view('ファイル名', ['変数名' => 渡すデータ])
return view('contents.blog.show',
[
'article' => $article,
'articleStyle' => $articleStyle,
'latest_articles' => $articles,
'preview_code' => $preview_code
]);