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