Laravel体験記:viewその2。似たような機能たくさんすぎてつらい。
Laravel体験記:Viewその2
今までに学習したこと
- ルーティング(web.php)
- Controller
- Viewの基本的な使い方
Blade構文
▪️if
@if (条件)
@else
@endif
▪️empty
@empty(変数)
@endempty
phpでよく
if(!empty($key)){
}
みたいなことやるんだけど、bladeならどうやるんだろう。@else使わないといけないのかな。めんどくさい。
繰り返し
この辺はしっくりくる。
@for($i=0; $i<10; $i++)
<p>{{$i}}</p>
@endfor
@foreach($list as $val)
<p>{{$val}}</p>
@endforeach
continueやbreakも使える。
@for($i = 0; $i<10; $i++)
@if ($i % 2 == 0)
@continue
@endif
@if ($i == 5)
@break
@endif
{{$i}}<br />
@endfor
$loopなるものがあった。これは便利そう。その昔、Smartyにも似たようなやつがあった記憶。
@foreach($list as $val)
<p>{{$loop->index}} | {{$val}}</p>
@endforeach
@phpというのもあった。<?phpでええやんって思った。
@php
$list = [
'たまご', 'ごましお', 'おかわりください'
];
@endphp
<?php
$list = [
'たまご2', "ごましお2", "おかわりいらない"
];
?>
レイアウト
▪️sectionとyield
@sectionと@yieldが大事らしい。
何回も読んだが、全然頭に入ってこない。
- section
- show(一番わからん)
- yield(まだわかる)
- @section('key', 'value')みたいなこともできる。
うん、よくわからん。無視する。
要は、viewの継承を実現したいがためにややこしい設計になっていると理解した。
▪️コンポーネント
一方こちらはまだわかりやすい。
その名の通り部品。
@component('components.file')
@slot('渡す変数名')
変数の中身
@endslot
@endcomponent
わざわざ@slotを使って変数の中身を渡すのがだるい。
▪️サブビュー
こちらはincludeの役割なようだ。
おいおい、componentと同じような機能じゃねぇか!何がちゃうねん!
と思ったら、本当にphpのインクルードで、読み込み元の変数がそのまま使えるのがコンポーネントとの違いなようだ。
@include('components.file')
インクルード先が欲している変数に値を渡すこともできるようだ。コンポーネント的に使えるっていうことかな。
@include('components.file', ['msg' => 'やぁ'])
よくわからんけど、コンポーネントよりインクルード使ったサブビューというやつの方が個人的には直感的。
▪️コレクションビュー
これもまた、コンポーネントと何がちゃうねんってなった。
よく読んだら、ああなるほどね。
繰り返し処理を代行してくれるのね。
なんでも用意してくれているのはありがたいけど、初心者にとってはそれは今は教えてくれるなよってなる。
コンポーネント(?)ファイル
<li>{{$item}}</li>
呼び出し方
@each('components.firsteach', $list, 'item')
ビューコンポーザ
まだあるのかよ。もう覚えたくないよ。
ということで、無視。
まとめ
- 似たような機能たくさん。
- どう住み分けされてんねんってなった。
- 今学習しても効率が悪いと判断。実際にアプリを作りながら見た方がいいやつと判断。
- とりあえず、includeだけ使おうと思う。十分な気がする。
次回
ミドルウェアってやつをやる。また新しいこと覚えるのつらい。
@yieldと@sectionはこの記事がわかりやすいです!
https://qiita.com/janet_parker/items/d0cbbb09e6446bc36a81
ページ全体で使うテンプレートHTMLをつくったとして、
例えばページタイトルや、ページごとに変更したい箇所があるときに便利です。
ありがとうございます!
参考URLでもうちょっと頭が整理できそうです。併せて読んでいきたいと思います。