(Laravel) ビューの使い方(基本)

(Laravel) ビューの使い方(基本)

 

本記事では、Laravelのビューについて、役割や使い方を詳しく解説していく。

 

Laravelのビューとは

Laravelのビューとは、簡単に言うと、ブラウザに表示される内容の雛形(テンプレート)だ。

laravel-view

Laravelのビューの役割

Laravelのビューの役割は、MVCモデルで表現すると「view」にあたる部分だ。
つまり、クライアント画面の表示部分を担当する。

なので、基本的には表示する内容の雛形のみを準備しておき、ロジックは基本的に記述しない。

表示内容にロジックを要する箇所には、呼び出し元であるコントローラにロジックを記述し、ビューでは結果のみ受け取り、結果を表示する。

Laravelのビューの役割
  1. MVCモデルのビューの部分。クライアントに表示する内容の雛形を記述する。
  2. ビューにロジックは記載せず、コントローラにロジックを記載する。

 

 

ビューファイルの配置場所

Laravelのビューファイルを配置するフォルダは下記

# Laravelのビューファイルを配置するフォルダ

/resources→viewsフォルダ内

 

/resources/viewsフォルダ以下にビューファイルを配置しておくことで、ルーティングや、コントローラ側から、viewメソッドでファイルを呼びだすことができ、画面に内容を表示することができる。

#コントローラからviewメソッドを使う例

public function index() {

   return view('hello.index');  # /resources/views/helloフォルダ内の、index.phpを呼ぶ
}

 

Laravelのテンプレートエンジン「blade」

Laravelのビューは、bladeというテンプレートエンジンを使用する
一昔前ならば、phpではSmartyというテンプレートエンジンがよく使われていたが、Laravelはbladeだ。ちょっと名前がかっこいい。

bladeを使ったファイルの拡張子は「.blade.php」。
bladeには変数の値を{{ }}で埋め込むことができるなど、直感的にソースを扱える特徴がある

bladeの具体的な使い方などは、別記の下記参照。

 

Laravelのビューの使い方

では、本題。Laravelのビューの使い方について、解説していく。

 

ビューファイルの呼び出し方

ルーティングや、コントローラからviewファイルを呼び出す際には、view()メソッドを使う。
view()メソッドを使用する際は、/resouses/viewsフォルダからのパスで指定することに注意。

#view()メソッドの書式
view(‘フォルダ名.ファイル名’);

 

コントローラのアクションに記述した例が以下

#コントローラからviewメソッドを使う例

public function index() {

   return view('hello.index');  # /resources/views/helloフォルダ内の、index.phpを呼ぶ
}

 

「hello.index」と書いてあるが、これは/resources/views/helloフォルダ内の、index.blade.phpを呼び出すということを意味する。

フォルダの区切りはカンマで指定するので注意して欲しい。

ちなみに、.phpや.blade.php等の拡張子は省略できる。

 

view()メソッドで、ビューへ値を受け渡す

view()メソッドは、第二引数に連想配列で値を渡すことで、ビューファイルに、値(配列)を渡すことができる。そうすることでコントローラのロジックで動的に取得した値などを、ビューファイル側で使用できるようになり、画面の値を動的に表示できる。

//view()メソッドでの値の受け渡し
view( ファイル名, 連想配列)

 

以下が実際ビューに配列を渡す例。
コントローラのindexアクション内で、ビューに渡す配列 「$data」 を作成し、viewメソッドの第二引数に指定している。

public function index($id=‘zero’) {

    $data = [
        ‘msg’=>’メッセージ’,
        ‘id’=>$id
    ];

    return view(‘hello,index’, $data);
}

 

view()メソッドを介して渡された連想配列の値は、ビュー側(blade)では{{$キー}}として受け取り、表示内容に値を埋め込むことができる。

先ほどの$dataに入っている、‘msg’=>’メッセージ’を例に説明。
例えば<p>タグに「メッセージ」という値を表示させたい場合以下のようにする

# ビュー(blade)

<p>{{$msg}}</p>    #メッセージと表示

 

キーのmsgを「$msg」として{{ }}で囲むだけ。
本来なら<?php 変数名 ?>と書くところを、わかりやすく、簡単に記述することができる。

 

$requestインスタンス経由で、クエリ文字列を受け取る

クエリ文字列とは、urlの後ろの方にパラメータとして指定できる文字列
キー=値の組み合わせで指定する。

例)urlから「localhost:8080/hello?id=hoge」にアクセスがあった場合、
→「hello?id=hoge」の部分がクエリ文字列になる。

webページはこのパラメータを受けとり、受け取ったデータを元に動的なサイトを作成したりする。で、laravelでクエリ文字列を受け取るには、コントローラのアクション引数に「Request $request」を指定する。

public function index(Request $request) { //Request $requestを指定

    $data  = [
        ‘id’=>$request->id
    ];

    return view(…)
}

 

$requestインスタンスは、受け取ったクエリ文字列の情報を保持しており、
$request->キーとすることで値の取得が可能

 

ヘルパ関数(※ビューに限らずLaravel全般の機能)

Laravelには、ヘルパ関数と呼ばれる、Laravel独自のメソッドが用意されている。
様々な機能があるので、時間があれば色々と調べてみると、よりLaravelに精通できるだろう

例として、formタグを使うときには必ず書かないといけないヘルパ関数のcsrf_field()メソッドを紹介する。csrf_field()メソッドは、CSRFという攻撃を防ぐために書く。

formタグ直下に、{{ csrf_field() }}と記述する。

<form action="" method="post">
    <{{ csrf_field() }}>

.....
</form>

 

blade.phpは.phpより優先度が高い

blade.phpは.phpより優先度が高い。

index.phpとindex.blade.phpがコントローラに存在した状態で、
view(‘index’)を読み込んだら、index.blade.phpが優先的に読み込まれる。

 

ビューで変数を受け取る {{$キー }} は、HTMLエスケープしてくれる

Laravelの場合、ビューで変数を受け取る{{$ }}に入った値は、
HTMLエスケープ処理を自動で行ってくれる。

つまり、HTMLタグなどを埋め込もうとしても、ただの文字列になってしまうということだ。

逆にエスケープして欲しくない場合は、{{!! $キー !!}}と書く。
そうすることで、タグなどはそのままHTMLとして認識される。

 

関連記事

 

記事が気に入った方はシェアをお願いします!

コメントを残す

メールアドレスが公開されることはありません。