【Laravel】のlayouts配下にテンプレファイルを追加しても反映されなかった解決方法

2025.03.23

laravelで本格的なWEBアプリの個人開発に入るが、最初のテンプレートの概念でつまずいたので、メモとして残しておく

/Layouts/ 配下にファイルを設置するだけだと表示されない

dashboard.blade.phpなどで使われているデフォルトのテンプレは下記に格納されている

それをdashboard内で下記のように呼び出している

<x-app-layout> {{-- app.blade.phpをテンプレとして呼び出し --}}
    <x-slot name="header">
        <h2 class="font-semibold text-xl text-gray-800 leading-tight">
            {{ __('Dashboard') }}
        </h2>
    </x-slot>

    <div class="py-12">
       以下省略~~
    </div>
</x-app-layout>


しかし、このlayouts配下に新しくtest-layouty.blade.phpを追加し、<x-test-layout></x-app-layout>にしても表示されない。

※ちなみにresources/views/components/ に配置した場合は表示される。

ルート直下のapp配下で設定が必要だった

app.blade.phpなどのはこのディレクトリ外で別途定義をしていた。

<?php

namespace App\View\Components;

use Illuminate\View\Component;
use Illuminate\View\View;

class AppLayout extends Component
{
    /**
     * Get the view / contents that represents the component.
     */
    public function render(): View
    {
        return view('layouts.app');
    }
}

これと同じように「app/View/Components/TestLayout.php」を定義すれば標示されるはずだ。

Componentsは不要

上記の設定はfooterやsidebar、その他コンポーネントを定義する場合は不要で、そのままスロットが使用可能だ。

ルート直下のresource配下で呼び出しを操作しているのにも関わらず、ルートのapp配下でも設定が必要なので、つまづいていたというオチだ。

PIC UP