Laravelを学習する中で「その場では理解したけど、少し経つと忘れる…」というポイントをまとめたメモページです。
困ったときにすぐ見返せるよう、項目は増えたら随時追記していきます。
Bladeコンポーネント(<x-...>)の探しに行く順番
Bladeコンポーネントを呼び出す <x-〇〇〇>タグがあると、Laravelはまず クラスベースコンポーネントを探し、なければ 匿名コンポーネントを探す。
- app/View/Components/… に対応する コンポーネントクラスがあるか確認 → あればクラスを実行し、render() が返すBladeを表示する
- クラスが無ければ resources/views/components/… の Blade(匿名コンポーネント)を探す
→ 見つかればそのBladeを表示する
コンポーネントのサブディレクトリはドット記法
<x-forms.input> のようにドットで区切ると、サブディレクトリのコンポーネントを呼び出せる。
- クラスベースなら app/View/Components/Forms/Input.php
- 匿名コンポーネントなら resources/views/components/forms/input.blade.php
タグ名はケバブケース、クラス名はパスカルケースで対応する(<x-user-profile> → UserProfile)。
@propsと$attributesの違い(匿名コンポーネント)
匿名コンポーネントに渡した属性は、@props で宣言したものだけが変数になる。宣言していない属性は $attributes に入る。
{{-- resources/views/components/alert.blade.php --}}
@props(['type' => 'info'])
<div {{ $attributes->merge(['class' => "alert alert-{$type}"]) }}>
{{ $slot }}
</div>
@props に書き忘れると、変数として使えず $attributes 側に流れるので「undefined variable」になる。
コンポーネントを修正したのに反映されないとき
BladeはコンパイルされたPHPが storage/framework/views にキャッシュされる。修正が反映されないときは:
php artisan view:clear
route / config / view / cache をまとめて消すなら:
php artisan optimize:clear
