【Laravel】ControllerからView(ビュー)を呼び出す!
PHPバージョン:7.1.14
Laravelバージョン:5.7.9
前回までで
特定のアドレスにアクセス→routeを参照→Controllerで処理を実行
というところまでできました!
今回はMVCのView(ビュー)を使い、
ブラウザにWebページを表示します!
(Unityなどゲーム開発ではほぼ使わないかと思いますので簡単に!)
Viewの場所を確認する
Viewに関するファイルは、resources>viewsフォルダにあります。
初期状態ではwelcome.blade.phpというファイルだけあります。
そうです、routes>web.phpにデフォルトで記述されていたページです!
Route::get('/', function () { return view('welcome'); });
routes>web.php
return view('welcome');
を実行すると
resources>views>welcome.blade.php
というファイルが表示されるようになっています。
(「.blade.php」の部分は書かなくてもLaravelが勝手に変換してくれます。)
bladeについて
bladeとはLaravelに搭載されている、テンプレートエンジンです。
resources>views>welcome.blade.phpファイルを開くと、
@if(Route::has('login'))
という記述があります。
bladeを使うと「@if()」でif文を表現できます。
PHPで書こうとすると
となり、bladeのほうが簡潔に記述できることが分かります。
またbladeのレイアウトという機能を各ページで継承することで、
同じデザインを使い回したりも出来ます。
そんなLaravelのために用意された便利なテンプレートがbladeです!
Viewファイルを作成する
それではarticle.blade.phpというファイルを
resources>viewsに作成しましょう!
<!doctype html> <html> <head> <title>Laravel Hello</title> </head> <body> <h1>Laravel Hello</h1> <p>{{$hello}}</p> </body> </html>
resources>views>article.blade.php
内容としては普通のhtmlです。
「{{$hello}}」の部分だけblade特有の記述で、
送信されてきた変数を表示します。
{{$変数名}}
という書き方です。
それではControllerへ戻り、
Viewを表示する処理を記述しましょう!
ControllerからViewを呼び出す
Viewを呼び出す処理は、
return view('Viewページ名');
で行えます。
web.phpにデフォルトであった、
welcomeページを呼び出す処理と同じです。
前回作成したArticleControllerのshowメソッドを編集します。
<?php namespace App\Http\Controllers; use Illuminate\Http\Request; class ArticleController extends Controller { function show() { $data = [ 'hello'=>'ハロー!', ]; return view('article', $data); } }
app>Http>Controllers>ArticleController.php
$data配列変数に中身が'ハロー'のhello変数を設定します。
(変数を複数指定したい場合は配列を増やします。)
この$data変数をviewメソッドの第2引数に指定すると、
bladeで変数を使うことができます。
結果
{{$hello}}にviewメソッド第2引数で指定した'hello'が代入され、
無事「ハロー」という文字が表示されました!
今回はここまでです、ありがとうございました〜