コントローラーの場所
コントローラーは、アプリケーションディレクトリー以下の次のディレクトリーに配置される。
app/Http/Controllers/
一般のコントローラー
概要
- 一般のコントローラーは複数のアクションを持つ
- アクションはコントローラーのメソッドとして
public
宣言される - アクションはルーティングで
'コントローラー名@アクション名'
として呼び出される。
コントローラーの生成
アプリケーションディレクトリー内で以下のコマンドを実行する。
php artisan make:controller コントローラー名
モデル作成時に-c/--controlleroption
を付けると、モデルと同時にコントローラーも作成される。この時のコントローラー名は単数形。
アクションの定義
コントローラークラスのメソッドとしてアクションを定義する。
1 2 3 4 5 6 7 8 |
class コントローラ名 extends Controller { public function アクション名() { ..... return view('ビューファイルパス', 変数を渡す場合の連想配列); } } |
ルーティング定義
ルーティングファイルで、メソッド・URLとコントローラーを結びつける。
1 |
Route::メソッド('URL', 'コントローラー名@アクション名'); |
シングルアクションコントローラー
概要
- シングルアクションコントローラーは、アクションを1つだけ持つ
- アクション名は
__invoke()
で定義する - ルーティングではコントローラー名のみ指定する
コントローラーの生成
生成は一般のコントローラーと同じ。ただしシングルアクションコントローラーの場合は、コントローラー名の末尾にController
を付さない慣例あり。たとえばSingleAction
などのようにController
を付けない。
php artisan make:controller コントローラー名
--invokable
オプションを付けると、__invoke()
メソッドが準備された状態でコントローラーが生成される。
php artisan make:controller コントローラー名 --invokable
なお、シングルアクションコントローラーを生成する場合は、ルーティングの定義より先に生成しないとエラーが発生する。
1 2 3 4 5 6 7 8 9 10 11 12 |
class コントローラー名 extends Controller { /** * Handle the incoming request. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function __invoke(Request $request) { // } |
アクションの定義
シングルアクションコントローラーのアクション名は__invoke()
と決まっている。
1 2 3 4 5 6 7 8 |
class コントローラー名 extends Controller { function __invoke() { ..... return view('ビューファイルパス', 変数を渡す場合の連想配列); } } |
ルーティング定義
一般のコントローラー・アクションは'コントローラー名@アクション名'
としたのに対して、シングルアクションコントローラーのルーティングではコントローラー名のみ指定する。
1 |
Route::メソッド('パス', 'コントローラー名'); |