Laravel 9路由调用可调用类时出现Invalid Route Action错误求助
解决Laravel 9中路由报错"Invalid route action: [Auth\RegisterController]"
这个错误的核心原因是:你当前的路由写法要求控制器是单动作控制器(即包含__invoke方法),但你的RegisterController要么没有这个方法,要么你实际想用的是普通控制器的指定方法。
解决方案分两种情况:
情况1:使用普通控制器(已有register方法)
修改路由,明确指定控制器的方法名,用@连接类名和方法:
Route::group([ 'prefix' => 'auth', 'namespace' => 'Auth' ], function(){ Route::post('register', 'RegisterController@register'); });
情况2:改为单动作控制器
如果想保留原路由写法,需要把RegisterController改成单动作控制器,将原register方法替换为__invoke:
namespace App\Http\Controllers\Auth; use Illuminate\Http\Request; use App\Http\Controllers\Controller; class RegisterController extends Controller { public function __invoke(Request $request) { // 这里写你的注册逻辑代码 } }
额外推荐:Laravel 9更规范的写法
Laravel 9推荐直接引入控制器类,避免字符串写法的潜在问题,示例:
use App\Http\Controllers\Auth\RegisterController; // 普通控制器写法 Route::prefix('auth')->group(function(){ Route::post('register', [RegisterController::class, 'register']); }); // 单动作控制器写法 Route::prefix('auth')->group(function(){ Route::post('register', RegisterController::class); });
内容的提问来源于stack exchange,提问作者Muhammad Rijal
相关产品推荐
相关产品推荐

