Laravelでレイアウトを共通化する方法
レイアウトを共通化するイメージ
全ページに共通するレイアウトを実装したファイルを1つ作成。(親)
↓
各ページで違うレイアウトを実装したファイルをそれぞれ作成。(子)
親ファイルを作成する。
①resource/views
にlayoutsフォルダを作成する。
②1で作成したフォルダに親ファイルを作成する。
ファイル名:app.blade.php
③2で作成したファイルに、前ページに共通するコードを書く。
④ページごとに違うコードは@yield
を使用する。
<head>
<meta charset="UTF-8">
<title>@yield('title')<title>
<head>
※引数は子ファイルで呼び出す時に、親ファイルのどの部分かわかるような名前にする。
子ファイルにコードを書く。
①親ファイルを指定する。@extends
を使用する。
@extends('layouts.app')
※引数はresources/view
を省略し、〇.blade.phpの.blade.php
を省略する。
階層は/
ではなく.
を書く。
②親ファイルに書いた@yieldを置きかえるコードを書く。@section
を使用する。
<!-- 文字列を置きかえる場合 -->
@section('@yieldの引数に指定した名前', '置き換える文字列')
<!-- 複数行のコードを置きかえる場合 -->
@section('@yieldの引数に指定した名前')
置きかえるコード
@endsection
※書き方が2種類ある。
ヘッダーとフッターを部品化する。
①ファイルを2つ用意し、それぞれヘッダーとフッターのコードを書く。
ファイル場所:resources/views/layouts
ファイル名:header.blade.php
、footer.blade.php
②親ファイルにヘッダーとフッターのファイルを呼び出すコードを書く。@include
を使用する。
@include('layouts.header')
:
@include('layouts.footer')
※引数の書き方は@extendsと同じく、resources/view
を省略し、〇.blade.phpの.blade.php
を省略する。
階層は/
ではなく.
を書く。
アプリ名を共通化する
例:ヘッダーの左側にどのページでも同じものを表示する場合
①HTMLでは以下のように記述する。(例)
<a href="#">
{{ config('app.name', 'Laravel') }}
</a>
↑config('文字列が設定されている場所', '文字列が設定されていない場合に表示する文字列')
例:app.nameに文字列が設定されていない場合は、'Laravel'という文字列を表示する。
②表示される文字列を変更する。
1:config(app.name)
→config/app.php を見る。
2:app.phpでname
を探す。
'name' => env('APP_NAME', 'Laravel'),
3:APP_NAMEが定義されている場所を探す。(Laravelをダウンロードしたフォルダ直下の.envファイルを見る。)
4:.envでAPP_NAME
を探す。
APP_NAME=Laravel
5:APP_NAMEの値を変える。
※文字列に''
はつけなくて良い。