久しぶりにLaravelを触っていて、変なところでつまづいたのでメモしておきます。
発生したのはLaravel 6.20 です。
新しくコントローラを作成しようとして、artisan でmake:controllerを実行したらエラーになりました。
$ php artisan make:controller NewSingleActionController --invokable
UnexpectedValueException : Invalid route action: [App\Http\Controllers\NewSingleActionController].
at /var/www/laravel_app/vendor/laravel/framework/src/Illuminate/Routing/RouteAction.php:92
88| */
89| protected static function makeInvokable($action)
90| {
91| if (! method_exists($action, '__invoke')) {
> 92| throw new UnexpectedValueException("Invalid route action: [{$action}].");
93| }
94|
95| return $action.'@__invoke';
96| }
Exception trace:
1 Illuminate\Routing\RouteAction::makeInvokable("App\Http\Controllers\NewSingleActionController")
/var/www/laravel_app/vendor/laravel/framework/src/Illuminate/Routing/RouteAction.php:47
2 Illuminate\Routing\RouteAction::parse("new_route", ["App\Http\Controllers\NewSingleActionController", "App\Http\Controllers\NewSingleActionController"])
/var/www/laravel_app/vendor/laravel/framework/src/Illuminate/Routing/Route.php:162
Please use the argument -v to see more details.
最初はartisanコマンドを間違えたのかと思ったのですが、Execption traceのところをよく見てみると、Route.phpで例外発生しています。
そういえば、この後コントローラを作るからと、NewSingleActionContoller へのルーティングを書いておいたんだった。
web.phpから、NewSingleActionContllerへのルーティング情報をコメントアウトしたら解消しました。
artisanコマンドって、Routeなどの直接関係してなさそうなソースの例外も拾って動作停止するんですね…知らなかった。
こちらのQiita記事を見て、原因に気づいたのですが…名前空間の制御、意識してないとまた忘れそうです。
以上です。あなたのお役に立てればうれしいです。