Laravel で Viewを作成する

Laravel
スポンサーリンク

Viewを作成するコマンドは、無い

Viewを作成するコマンドは、無いので、

resources/views/

配下に、

index.blade.php

みたいなファイルを手動で作成する。

テンプレートエンジン bladeが利用できる

LaravelのViewでは、
テンプレートエンジン bladeが利用できる。

ココらへんは後から追記しようと思う。

bladeでの変数の取り扱い

bladeでは以下の書き方で変数にアクセスできる。

{{ $変数 }}

Laravel Controller 編集 – 基本編 で書いた例から呼び出されたViewで以下のように書くと、

<!DOCTYPE html>
<html lang="ja">
<head>
  <meta charset="UTF-8">
  <title></title>
</head>
<body>
  {{ $user }} <br>
  {{ $score }}
</body>
</html>

こういうページが作れる。

{{ }} の中で、エスケープ処理しない(変数や式として扱わない)やり方

bladeにて、入力した値(HTMLタグなど)をそのままの形式で表示したい場合、

{!! !!}

で囲う。波括弧は一重なのがポイント。↓

  • x {{!! 文字列 !!}}
  • o {!! 文字列 !!}

@extends、@yieldと@sectionで共通パーツを使う

bladeでは、定義したレイアウトを継承して使うことができる。

たとえば、複数ページで共通で使う画面構成のガワ(ヘッダーやフッター、サイドメニューなど)を継承して使う。

resources/views/

配下に更にガワ用のフォルダを作る。

フォルダ名は任意で良い。

ここでは、layouts とする。

mkdir layouts

さらにガワ用のファイルを作る。

ファイル名は任意で良い。
が、

●●●.blade.php

の形式にする。

ここでは、common.blade.php する。

common.blade.phpには以下の内容で作成する。
ここでは、分かりやすくするためにhtmlの構文の正しさは無視して記述する。

<html>
<head>
<title>@yield('title')</title>
</head>
<body>
@yield('content')
</body>
</html>

上記の@yieldと記述したところでは、呼び出しをした側が独自の内容を埋め込める。

更に、resources/views/index.blade.php を作成する。

以下の内容で作成する。

@extends('layouts.common')
@section('title', 'とっぷぺーじだよ')
@section('content')
\
<p>コンテンツの中身である</p>

\
<p>ふつーにhtmlが記述できる</p>

@endsection

まずは一番最初に、一回だけ、@extends ディレクティブでガワとなる親レイアウトを呼び出す。
@sectionディレクティブで、ガワの@yieldで指定したところに、値を埋め込む指定をする。

@sectionは2通りの指定方法がある。

  • @section(‘title’, ‘文字列’) のように、文字列だけを記述するやり方
  • @section(‘content’) 〜 @endsection のように、中身にhtmlを記述するやり方

コメント