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だけ使おうと思う。十分な気がする。

次回

ミドルウェアってやつをやる。また新しいこと覚えるのつらい。