blade上でconfigを使った呼び出し方(2重foreach利用例)
初めに
皆さんこんにちは!
今回は、Laravelのテンプレートエンジンであるbladeに、configファイル内にある定数を呼び出す方法を紹介させていただきます。
ググっても出てこなかった内容だったため、備忘録も兼ねて掲載させていただきます。
是非参考にしてみてください。
bladeとは
公式から抜粋。
BladeはシンプルながらパワフルなLaravelのテンプレートエンジンです。他の人気のあるPHPテンプレートエンジンとは異なり、ビューの中にPHPを直接記述することを許しています。全BladeビューはPHPへコンパイルされ、変更があるまでキャッシュされます。つまりアプリケーションのオーバーヘッドは基本的に0です。Bladeビューには.blade.phpファイル拡張子を付け、通常はresources/viewsディレクトリの中に設置します。
Laravelを実装する際に、viewの部分はhtmlではなくbladeというLaravel固有のテンプレートエンジンを利用します。
書き方自体は、htmlですがhtmlの構文に加えて、Blade固有の機能が使えるようになります。
例
【条件分岐】
@if(条件式)〜@endif
【ループ処理】
@foreach(条件式)~@endforeach
今回は、blade上で、2重でforeachを利用し、configファイルから定数を出力するやり方の紹介になります。
では参りましょう。
記述の仕方
まずはconfigファイルの定数の紹介になります。
例題として、fruitsの情報が入っているfoods.php
というファイルを作成します。
こちらは、配列で保持しておりcategory
とkinds
でそれぞれ定数を持っています。
今回はこのファイルの情報を2重でforeachを利用し出力してみます。
<?php
return[
'FOODS' => [
'FRUITS' => [
'category' => 'グレープ',
'kinds' => [
'シャインマスカット',
'巨峰',
'ピオーネ',
'デラウエア',
'その他'
]
]
]
];
こちらが出力するためのコードになります。
@foreach(config('const.foods.FOODS') as $fruit)
<div class="title">{{ Arr::get($fruit, 'category') }}</div>
@foreach(Arr::get($fruit, 'kinds') as $kind)
<li>
<input type="checkbox" id="test-{{$loop->index}}">
<label for="test-{{$loop->index}}">{{ $kind }}</label>
</li>
@endforeach
@endforeach
解説
最初のforeach
最初のblade内にあるforeach
でconfig/const/foods.php
の中にあるFOODS
を呼び出しています。
出力方法としては、{{$fruit}}
で書きたくなるのですが、エラーが発生します。
想定されるエラーコードは下記です。
TypeError
htmlspecialchars(): Argument #1 ($string) must be of type string, array given
要は型がStringでしか出力できないのに、配列データで来てるよ?違くない?
って言われています。
上記のエラーの通りString型で出力する必要があるので、
{{ Arr::get($fruit, 'category') }}
としてあげて、$fruit
内にあるcategory
を指定してあげています。
結果、「グレープ」が出力されます。
2番目のforeach
最初のforeachの中に更にforeachを記述します。
そこで先程も利用したArr::get
を再度利用しています。
foreach(Arr::get($fruit, 'kinds') as $kind)
こちらの構文で$fruit
内にあるkinds
を指定してあげています。
あとは、{{$kind}}
と出力すると、上記の出力結果のお出ましです。
最後に
いかがだったでしょうか。
僕は出力がしっかりできるまで数時間を要しました。笑
他にも躓いている方がいるのではないかと思い記述させていただきました。
少しでも役に立てたら幸いです。
ありがとうございました。
Author And Source
この問題について(blade上でconfigを使った呼び出し方(2重foreach利用例)), 我々は、より多くの情報をここで見つけました https://qiita.com/hiroyuki_0507/items/b7057b9bbb355a3e38ca著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .