【Laravel】コントローラーを使ってみる

今回はLaravelの基本中の基本であるコントローラーを使ってみます。
目次
開発環境
- OS:Windows11
- Docker Desktopインストール済み
- VSCodeインストール済み
前提
・開発環境:Docker上のappコンテナにLaravelがインストールされている
詳細な環境は下記の記事をご参照ください。
今回はDocker環境で実施しますが、ローカルに直接インストールしている方も参考になると思います。
Target class [○○○Controller] does not exist. を回避する
何も気にせずコントローラーを使うとnot existエラーが発生します。
新しいLaravel(バージョン8~)の場合、デフォルトの名前空間が削除されているようです。
難しい話は置いておいて、こちらのQiitaの記事を参考にちょっとした修正を入れてあげます。
RouteServiceProvider.phpを開く
下記のファイルを開きます。
laravel\src\app\Providers\RouteServiceProvider.php

RouteServiceProvider.phpを編集する
3か所にコードを追記します。
①21行目あたり
protected $namespace = 'App\Http\Controllers';
②35行目あたり
->namespace($this->namespace)
③39行目あたり
->namespace($this->namespace)

コントローラーを作成する
ターミナルを表示する
メニューの表示から、ターミナルを開きます。
ショートカットキーはCtrl + @なので、覚えておくと便利です。

appコンテナに入る
下記のコマンドを実行して、appコンテナに入ります。
docker compose exec app bash

コマンドでコントローラーを作成する
下記のコマンドを実行して、コントローラーを作成します。
php artisan make:controller TestController
このコマンドでTestController.phpというファイルが作成されます。
コントローラーを作成する際、ファイル名は○○Controllerとするのがベター(マスト?)です。

コントローラーを編集する
コントローラーに下記のメソッドを追加します。
public function test()
{
return "コントローラーのテスト";
}

ルーティングを行う
web.phpを開く
下記のファイルを開きます。
laravel\src\routes\web.php

web.phpを編集する
パスとコントローラーのメソッドを紐づけるために、下記のコードを追加します。
Route::get('test-controller', 'TestController@test');
- 第一引数:パス
- 第二引数:コントローラーのクラス@コントローラーのメソッド

ブラウザで動作確認する
下記のURLを開いて動作確認をします。
http://localhost:8080/test-controller
画面に「コントローラーのテスト」と出力されていればOKです。

以上になります。
お疲れさまでした。