Laravel8でtitleタグを簡単に動的にする(ページごとに変える)方法
458 回閲覧されました
みなさんこんにちは、jonioです。
Laravelでheadタグの中にtitleタグを入れますが動的にしたい(ページごとに変えたい)はずです。
簡単にできる方法を2通り解説します。
Laravelのバージョン
今回試したバージョンは8ですが他のバージョンでもできる気がします。
変数を直接指定する方法
大体の人が共通のページを使うはずなので共通のレイアウトを作成します。(共通レイアウトはなくてもいいです)
「Laravelのプロジェクト > resources > components」の下の階層に「layout.blade.php」を作成して中身に下記の記述をします。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ $title }}</title>
</head>
<body>
共通レイアウトです。
</body>
</html>
7行目の「$title」をページごとに変えます。
そしてどのページでもいいですがindex.blade.phpで試します。
コントローラーのアクションに下記の記述をします。
public function index(){
$title = "権限一覧";
return view('index', compact('title'));
}
そしてindex.blade.phpを作成して中身に下記の記述をします。
<x-layout/>
これでindex.blade.phpで表示するページを開いてタブを見るとtitleタイトルタグの内容が反映されるのが確認できます。
表示するページごとにコントローラーの$titleの値を変えればページごとのtitleタグの内容を変えることができます。
$titleをコントローラーごとに変えるのではなく「view()->share」を使います。
使い方は下記になります。
view()->share('変数名', '変数の内容');
「変数名」を「title」にして「変数の内容」を「権限一覧」にすれば「$title = 権限一覧」と同じになります。
コントローラーに実際に記述すると下記になります。
public function index(){
view()->share('title', '権限一覧');
return view('roletype.index');
}
この場合はcompact関数を使ってビューに$titleの値を渡す必要はありません。