问题描述
这是我在 laravel 7 中运行良好的路线:
Route::get('/verify','Auth\RegisterController@verifyUser')->name('verify.user');
Illuminate\Contracts\Container\BindingResolutionEx. Target class [Auth\RegisterController] does not exist.
解决方法
在 Laravel 8 中,您的 RouteServiceProvider
中应用程序的控制器命名空间默认是注释的:
// protected $namespace = 'App\\Http\\Controllers';
根据文档:
在以前的 Laravel 版本中,RouteServiceProvider 包含一个 $namespace 属性。此属性的值将自动添加到控制器路由定义和对操作助手 / URL::action 方法的调用的前缀。在 Laravel 8.x 中,这个属性默认为 null。这意味着 Laravel 不会自动添加命名空间前缀。”Laravel 8.x Docs - Routing Namespace Updates
您可以像这样导入命名空间:
use App\Http\Controllers\Auth\RegisterController;
// then
Route::get('/verify','RegisterController@verifyUser')->name('verify.user');
或者您可以使用完全限定的名称,如下所示:
Route::get('/verify',[App\Http\Controllers\Auth\RegisterController::class,'verifyUser'])->name('verify.user');
// or
Route::get('/verify','App\Http\Controllers\Auth\RegisterController@verifyUser')->name('verify.user');;
,
以下是laravel 8 中定义路由的新方法
Route::get('/verify',[Auth\RegisterController::class,'verifyUser'])->name('verify.user');