从5.8版迁移到8版后,Laravel Target类[register]不存在



我在Laravel 5.8中有一个项目,在Laravel 8中创建了新项目,并将带有代码的文件移动到新项目中。我的路线文件有路线:

use AppHttpControllersAccountController;
use IlluminateRoutingRouter;
/* @var $router IlluminateRoutingRouter */
$router->get('/', ['uses' => 'PageController@home', 'as' => 'home']);
$router->group(['prefix' => 'account', 'middleware' => ['register', 'no-cache', 'timezone']], function (Router $router) {
// $router->get('/dashboard', ['uses' => 'AccountController@dashboard', 'as' => 'account.dashboard']);
$router->get('/dashboard', [AccountController::class, 'dashboard'])->name('account.dashboard');

当我在中键入home时,会显示url视图。但当我键入/帐户/仪表板时,我会收到错误:

IlluminateContractsContainerBindingResolutionException
Target class [register] does not exist.

中间件出了问题?为什么使用PageController和home的第一次路由有效,但account.dashboard在这两种情况下都不起作用(第一次被评论(

RouteServiceProvider中,我取消了注释行:

protected $namespace = 'App\Http\Controllers';

现在它工作了,我忘记添加appHttpKernel.php:

protected $routeMiddleware = [
...
'admin' => AdminMiddleware::class,
]; 

路由器找不到admin前缀

正如Robert在评论部分指出的,appHttpKernel.php中缺少'admin'。显然,解决方案是在$routeMiddleware数组中相应地添加一个项目,Robert将其显示为
protected $routeMiddleware = [
...
'admin' => AdminMiddleware::class,
]; 

最新更新