Laravelのコントローラーを使ってみます。
コントローラーはURLに応じてどの処理をするかをコントロールする部分になります。
画面と処理の間に位置し、両方をコントロールします。
習うより慣れよう、とりあえずやってみます。
コマンドでコントローラーを生成する
PHPコンテナの中に入る
docker compose exec app bash
コマンドでコントローラーを生成する
コマンドが正常に終了すると、Helloコントローラーが生成されています。
中身は何もありませんので、これから追加していきます。
コントローラーを修正する
先ほど作ったコントローラーにメソッドを追加していきます。
よくあるHello Worldを作ります。
public function index(){
echo("Hello World.");
}
ルーティングの設定をする
コントローラーを使うためには、URLとコントローラーを紐づける必要があります。
routesフォルダにあるweb.phpに紐づけ情報を追加していきます。
Route::get('/hello', 'HelloController@index');
「クラス名@メソッド名」で呼び出す処理を記載していきます。
ブラウザで確認する
Target class [HelloController] does not exist.
クラスが存在しないと言われました・・・。
ちょっと調査が必要ですね。
トラブルシューティング
少し調べたらすぐに答えが見つかりました。
どういう理由かわかりませんが、Laravel8以降はRouteServiceProvider.phpに必要なコードがなくなっているようで、エラーが出るようになっています。
ということで、手動でLaravel7までの状態を再現してあげます。
プロパティ部分に下記を追記します。
protected $namespace = 'App\Http\Controllers';
あと、bootメソッドのapiとwebのルートに下記を追記します。
->namespace($this->namespace)
もう一度ブラウザで確認する
今度はうまく表示されました。
以上です。
今回は画面と処理の中間に位置するコントローラーの使い方でした。
お疲れ様でした。