【Laravel】8.x系のルーティングとコントローラーの使い方
目次
シンプルなコントローラー
1. 作成
手動でファイルを作成することもできるが、Laravel
には作成用のコマンドが用意されているので、そのコマンドを使ったほうが、名前空間や最低限必要な記述をしてくれるので便利
以下のコマンドを使用すると、app/Http/Controllers/
ディレクトリにxxxController.php
というファイルが生成される
1 |
|
2. アクションメソッドを記述する
1で作成したコードを見ると、以下のようなコードになっているはず。
このコードを見ると、
1 |
|
このコードにルーティング
されたときに呼ばれるコードを記述する
今回のケースだと、index
をルーティング先として設定すると、Hello
と画面に表示されるメソッドを作成した
1 |
|
3. ルーティングの設定
Route
クラスのget
スタティックメソッドを使用する
- アクセスURL:
/XXX
と設定するとhttp://アプリURL/XXX
でアクセスできる - アクションメソッド名:Controllerクラスに記述したメソッド
1
2
3
4<?php
use app\Http\Controller名;
Route::get('アクセスURL',[Controller名::class,'アクションメソッド名']);
2
のコードをアクセスURL/hello
で設定すると以下のようになる
1 |
|
シングルアクションコントローラー
1. 作成
シンプルなコントローラー作成コマンドに、--invokable
オプションを付けることで、__invoke
メソッドを含んだクラスを作成することができる
1 |
|
2. __invokeメソッドは基本的にアクションメソッドと同じ
シングルアクションの特徴として、アクションコントローラーには複数のアクションメソッドを記述したのに対して、シングルアクションは1つだけのアクションしか記述しません。
1の--invokable
オプションで作成すると以下のようなものが自動生成されます。
自動生成された__invoke
はLaravel
が用意したメソッドではなく、PHP
に標準でビルドインされているメソッドです。
以下はSingleActionController
を作成した例です。
1 |
|
この__invoke
メソッド内にルーティング
されたときに呼ばれるコードを記述します。
今回のケースだと、SingleActionController
をルーティング先として設定すると、hello
と画面に表示されます。
1 |
|
3. ルーティングの設定
基本的には、基本のコントローラーと同じ記述ですが、今回は、シングルアクションコントローラー
なので呼び出すアクションメソッドクラスの記述が必要ありません。
1 |
|
2
のコードをアクセスURL/single
で設定すると以下のようになる
1 |
|
【Laravel】8.x系のルーティングとコントローラーの使い方
https://blog.djima.net/2021/05/04/【Laravel】8-x系のルーティングとコントローラーの使い方/