【備忘録】LaravelのHelloWorld! ~ルーティング設定とバージョンの注意点~


~まずはじめに~

laravelのプロジェクト作成したんだけど、どこにphpファイル置けばWebに表示できるんだろう?
そもそもどうやってWebで確認するんだ?ってなったのでメモ
基本過ぎてみんなあんまり書いてないのかも・・・(´・ω・`)
ひとまずいつものHello World表示をゴールにします。

私の開発環境のLaravelのバージョンは
Laravel Framework 9.4.1
です。(Windows XAMPP環境です)
\c\xampp\shiftapp\配下にプロジェクトを作成しています。

表示したいURLとして今回は
http://localhost:8000/test/home
にします。(URLの変更はまた今度)

作成/修正するファイルは3つ!
修正が必要なファイル↓
\routes\web.php
新規作成ファイル↓
\app\Http\Controllers\TestController.php
\resources\views\sample.blade.php
↓この赤枠の中にあるよ!

ルーティングの設定

まずは、ルーティングの設定を行います。これをしないとWebサイトに表示できないよ!
※バージョンごとの注意があります!
\routes\web.phpを開くと・・・

Route::get('/', function () {
    return view('welcome');
});

って記述があると思うのでその下に以下を追記!

Route::get('/test/home', function () {
    return view('sample');
});

/test/homeの部分がURLにしたい部分で、作成したsample.blade.phpってviewを開いてくれます。
この書き方でも表示はできるのですが、今回はコントローラーを経由して表示させるようにします。
↓こう書きました。

Route::get('/test/home', 'App\Http\Controllers\TestController@entrance');

/test/homeの部分がURLにしたい部分で
App\Http\Controllers\TestControllerが今回作成したTestController.phpを指していて、
entranceはTestController.php内に記述したfunctionです。
Laravelのバージョン7まではRoute::get('/test/home', 'TestController@entrance');とも書けたらしいのですが、私はエラーが出たので↑で書きました。
【Target class [○○Controller] does not exist.】って出たらきっとこれだと思います!
Laravelのバージョン8以降はAppから書いてください!

あとはuseでコントローラーをインポートして以下のように書くこともできるそうです。
どの書き方が一番いいのかはよくわからないので知ってる人これ見たら教えてください。

use Illuminate\Support\Facades\Route;
use App\Http\Controllers\TestController;

Route::get('/test/home', [TestController::class, 'entrance']);

↓こんな感じ

コントローラーの設定

次にコントローラーの設定!
\app\Http\Controllers\TestController.phpを作成するよ!
web.phpでこのコントローラーにあるentrance()を呼び出して、sample.blade.phpってviewを表示してます。
↓こんな感じ

ビューの設定

あとちょっとだ!
\resources\views\sample.blade.phpを作成するよ!
表示させたい内容を書いてね!
↓こんな感じ

アクセスしてみると・・・↓

やったね!v(´・ω・`)v

APIのルーティングとかはapi.phpに設定する必要があるみたいなのでまた今度やってみます
(´・ω・`)ノ