LaravelでActionを切って躓いた話

概要

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 で定義することで解決しました。

参考