とりあえずHello Worldを表示します。
環境
- Laravel9.9 (sailで特に設定せずに作ったDockerコンテナ)
MVCの内のVだけ
LaravelはいわゆるMVC(Model+View+Controller)の考え方なんですが、とりあえずVだけでルーティング周りを確認しながらHello Worldを作ります。
ぶっちゃけHello WorldだけならViewもいらないのですが。
Route設定
ブラウザからの普通のHTTPリクエストに対しては”routes/web.php”に記述します。すでにwelcomeページのコードが書かれていると思います。
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', function () {
return view('welcome');
});
Routeがすでにややこしいのですが、今はこういう書き方するんだなで突破します。
Hello Worldをそのまま表示する場合は
Route::get('/hello', function () {
return 'Hello World';
});
を追記すればOK。”localhost/hello”でアクセスできます。
これだけだと寂しいのでViewを使ってみましょう。対応するviewファイルは後で作ります。
Route::get('/hello', function () {
return view('hello');
});
もしくは代わりにviewメソッドを使ってもよいです。
Route::view('/hello', 'hello');
書いたらViewを作ります。
Viewの作成
“resources/views/hello.blade.php”に書いていきます。
bladeとはLaravelで採用されているテンプレートエンジンの名前です。
<!DOCTYPE html>
<html>
<body>
<h1>Hello World</h1>
</body>
</html>
ざっくりと。
“localhost/hello”にアクセスすると出力できていると思います。
URLから値をとる
もう少し増やして”Hello {your name}”も作ります。
Route::get('/hello/{name}', function ($name) {
return 'Hello ' . $name;
});
getの第一引数についてある{name}の部分が$nameに入るイメージです。変数名はそろえてなくても構いません。
ふたつ以上の場合も大体同じです。雑です。
Route::get('/hello/{name1}/{name2}', function ($name1, $name2) {
return 'Hello ' . $name1 . $name2;
});
viewを使う場合は連想配列を使って
Route::get('/hello/{name}', function ($name) {
return view('hello', ['name' => $name]);
});
<!DOCTYPE html>
<html>
<body>
<h1>Hello {{$name}}</h1>
</body>
</html>
でviewに値を渡すことができます。
“localhost/hogehoge”等でアクセスして反映されてれば成功です。
お疲れさまでした
Route周りを掘り下げると山ほどあるのですが、必要になってからやるかなーって感じです。
コメント