コントローラーの場所
コントローラーは、アプリケーションディレクトリー以下の次のディレクトリーに配置される。
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::メソッド('パス', 'コントローラー名'); |