概要
LaravelでControllerではなく、Actionというクラスを定義して、実装しようとして躓いた話をまとめます。
やりたかったこと
- postsってルーティングにアクセスしたら、
App\Http\Controllers\Posts\IndexActionが呼ばれる
起きたこと
- postAutoDumpで下記のエラーが発生した
UnexpectedValueException: Invalid route action: [App\Http\Controllers\Posts\IndexAction].
原因
Posts\IndexAction のメソッドを、 __invoke として居ないことが原因でした。
ルーティングでは、__invoke を前提に書いているのに、 index とメソッド定義していたので、エラーになっていたようでした。
Route::post('review', 'Review\\RegisterAction');
ちゃんと、 __invoke で定義することで解決しました。