LaravelでHelloWorld
更新日 : 2020年02月04日
Laravelのインストールやディレクトリ構造、ライフサイクルまである程度理解したところで、新しいページを作成して表示までやってみましょう。
HelloWorldを表示する
Laravelのインストールが完了した時点で、Laravelのウエルカムページが表示されました。今回は新しいURLの生成と、そこから処理が行われるコントローラー、ビューの作成を行い、HelloWorldと表示させて見ましょう。
web.php
の修正
まずは新しくページを作成するために、URLを決めてルーティング設定を行います。
ルーティング設定のその他の様々な指定方法はhttps://readouble.com/laravel/6.x/ja/routing.htmlを見てみましょう。
routes/web.php
を開いて、下記のように変更してみましょう。
<?php
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
Route::get('/', function () {
return view('welcome');
});
Route::get('/hello-world', 'HelloController@index');
追記したのは最後の行のRoute::get('/hello-world', 'HelloController@index');
のみです。
これで、「GETメソッド用のURL/hello-world
を作成し、そのリクエストをHelloController
のindex
メソッドで処理する」という意味になります。HellowContorller
は次の項で作成します。
ルーティング設定後のURLについて
このweb.php
でのURL定義では、Laravelの公開ディレクトリであるpublic
フォルダ以降のURLパスとなります。
例えば、筆者であればPC上のデスクトップにあるhtdocs
をMAMPのドキュメントルートに設定しています。Laravelはhtdocs/PHP/laravel-test
にインストールされた状態です。
今回作成したhello-world
というルーティングでは、http://localhost:8888/PHP/laravel-test/public/hello-world
というURLのページを作成したことになります。
仮に、筆者のWEBサーバーのドキュメントルートをデスクトップ/htdocs/PHP/laravel-test/public
と設定すれば、http://localhost:8888/hello-wold
でアクセスが可能になります。
次にHelloController
を作成していきましょう。
コントローラーの作成
先程ルーティングで設定したHelloController
クラスを作成していきます。
コントローラーのその他様々な使い方に関してはhttps://readouble.com/laravel/6.x/ja/controllers.htmlを読んでみましょう。
app/Http/Controllers
ディレクトリにHelloController.php
を作成し、以下のコードを記載しておきましょう。
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Controller;
class HelloController extends Controller {
public function index() {
// 本来はModelからデータを取得する
$data = array('title' => 'Hello World!!');
return view('hello', $data);
}
}
まず、Laravelのコントローラークラスは、app/Http/Controllers/Controller.php
にあるController
クラスを継承(extends
)します。
また、今回はController
クラスと作成したHelloController
クラスが同一ディレクトリに存在するため、use App\Http\Controllers\Controller;
はあってもなくても構いません。
index
メソッドの中身を確認していきましょう。
今回はリクエストからデータを受け取る必要がないため、引数は必要ありません。
リクエスト時にフォームデータなどが存在する場合などは適宜引数を追加していきます。
フォームデータなどの受け取りについては次の記事で解説します。
次に$data = array('title' => 'Hello World!!');
です。
この部分はただの連想配列データを$data
変数に代入しているだけです。
これはビューへ渡すデータを作成しています。
本来はこの部分ではMVCで言うところのModelからデータを取得して、ビューに渡したいデータを取得します。今回はModelの解説は行わないためコントローラーでテスト用にデータを作成しました。
最後にreturn view('hello', $data);
です。
いきなりview
関数が登場していますが、これはLaravelフレームワークでグローバルで(フレームワーク内であればどこでも)使用できる機能の1つです。Laravelではこれらのグローバルで使用できる関数をヘルパと呼んでいます。
その他ヘルパに関してはhttps://readouble.com/laravel/6.x/ja/helpers.htmlに日本語で記載されています。
このview
関数の仕様を確認してみます。
view(ビューファイル名, ビューに渡したいデータ配列) : Viewインスタンス
本当は第三引数までありますが、使わないため省略しています。
第一引数にはビューファイル名を記載します。hello.blade.php
というビューファイル名であれば、hello
とだけ指定し、.blade.php
は省略します。
第二引数にはビューに渡したいデータを連想配列で指定します。今回は連想配列が格納されている$data
を指定していますね。連想配列であることが必須なので注意しましょう。後ほど理由がわかります。
これでコントローラーは完了です。コントローラーのルーティングから実行されるメソッドでは基本的にViewインスタンスを返します。ViewインスタンスもLaravel特有のクラスから生成されるオブジェクトです。Viewインスタンスの内容を理解する必要はありません。
最後にビューファイルとして指定されているhello.blade.php
ファイルを作成していきましょう。
ビューの作成
コントローラーでビューの指定をしているので、最後にビューファイルを作成しましょう。
ビューの様々な機能に関してはhttps://readouble.com/laravel/6.x/ja/views.htmlこちらを参考にしてください。
LaravelではBladeと呼ばれるビュー専用のテンプレートエンジンを利用しています。Bladeテンプレートに関してはhttps://readouble.com/laravel/6.x/ja/blade.htmlこちらを確認してください。
テンプレートエンジンとは、特定の記述方法をテンプレートとして採用し、自動でコードに変換してくれる便利な機能です。
早速ビューファイルを作成していきますが、せっかくなのでインストール時に使用されているビューファイルをそのまま利用してしまいましょう。
resources/views
ディレクトリに存在するLaravelのトップページで表示されたビューファイル(welcome.blade.php
)をhello.blade.php
としてコピーします。
以降はhello.blade.php
を編集します。
PHPファイルに以下のような「Laravel」と表示している部分があるので、その部分だけ変更します。
<div class="title m-b-md">
Laravel
</div>
この部分を下記のように変更しましょう。
<div class="title m-b-md">
{{ $title }}
</div>
$title変数を表示する指定を行っています。$title変数がいきなり出てきているように思うかもしれませんが、これはコントローラから送られてきた連想配列のキー名です(array('title' => 'Hello World!!')
のtitle
)。
このように連想配列のキーがビューでは変数として利用可能になっています。
もちろん今回の$title
の変数にはHello World!!
という文字列のデータが格納されています。
また、{{ $title }}
と書くだけで、テンプレートエンジンが以下のようなPHPコードに変換します。<?php echo e($title); ?>
e関数はLaravelで定義されているHTMLエスケープするためのヘルパ関数です。つまり{{ $title }}
と書くだけでHTMLエスケープも自動でやってくれます。テンプレートエンジン様様です。
これですべて完了です。実際に作成したURLでアクセスしてみましょう。
実際にブラウザでアクセスしてみる
MAMPで実行していて、ドキュメントルートがLaravelのpublicディレクトリでない場合には、ドキュメントルートからたどってLaravelのpublic
フォルダ以降からルーティングで定義したURLパスを指定します。
筆者の場合にはhttp://localhost:8888/PHP/laravel-test/public/hello-woldというURLになります。
コントローラーにて設定した文字列が大きく表示されているはずです。
うまく表示できていれば完了になります。
まとめ
今回は入門としてHello Worldと表示してみました。
ルーティング→コントローラー→モデルからデータ取得→ビューへデータを渡す→ビューの表示という流れはどんなページでもほぼ変わりありません。
この基本が理解できれば様々なページを作成できます。
モデルからデータを取得する部分に関してはこちらの記事で解説しています。
タグ
-
前の記事
Laravelのライフサイクル
-
次の記事
Laravelでのリクエストデータの取得