マルチリンガルなプログラマーになろう

習うより慣れよう、まずはコピペでOK

Laravelのコントローラーを使う

Laravelのコントローラーを使ってみます。

コントローラーはURLに応じてどの処理をするかをコントロールする部分になります。

画面と処理の間に位置し、両方をコントロールします。

習うより慣れよう、とりあえずやってみます。

 

コマンドでコントローラーを生成する

PHPコンテナの中に入る

docker compose exec app bash

コマンドでコントローラーを生成する

php artisan make:controller HelloController

 

コマンドが正常に終了すると、Helloコントローラーが生成されています。

中身は何もありませんので、これから追加していきます。

コントローラーを修正する

先ほど作ったコントローラーにメソッドを追加していきます。

よくあるHello Worldを作ります。

public function index(){
    echo("Hello World.");
}

 

ルーティングの設定をする

コントローラーを使うためには、URLとコントローラーを紐づける必要があります。

routesフォルダにあるweb.phpに紐づけ情報を追加していきます。

 

Route::get('/hello', 'HelloController@index');

クラス名@メソッド名」で呼び出す処理を記載していきます。

ブラウザで確認する

Target class [HelloController] does not exist.

クラスが存在しないと言われました・・・。

ちょっと調査が必要ですね。

 

トラブルシューティング

少し調べたらすぐに答えが見つかりました。

qiita.com

どういう理由かわかりませんが、Laravel8以降はRouteServiceProvider.phpに必要なコードがなくなっているようで、エラーが出るようになっています。

ということで、手動でLaravel7までの状態を再現してあげます。

 

プロパティ部分に下記を追記します。

protected $namespace = 'App\Http\Controllers';

 

あと、bootメソッドのapiとwebのルートに下記を追記します。

->namespace($this->namespace)

もう一度ブラウザで確認する

今度はうまく表示されました。



以上です。

今回は画面と処理の中間に位置するコントローラーの使い方でした。

 

お疲れ様でした。