Laravelで存在しないコントローラへのルーティングを書いたらInvalid route action エラーになった

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

久しぶりに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記事を見て、原因に気づいたのですが…名前空間の制御、意識してないとまた忘れそうです。

https://qiita.com/Okkun555/items/3a8c5df75a3f45d0474c

以上です。あなたのお役に立てればうれしいです。

  • このエントリーをはてなブックマークに追加
  • Pocket
  • LINEで送る

SNSでもご購読できます。

コメントを残す

*