Laravel Target 类 [register] 从 5.8 版本迁移到 8 后不存在
Posted
技术标签:
【中文标题】Laravel Target 类 [register] 从 5.8 版本迁移到 8 后不存在【英文标题】:Laravel Target class [register] does not exist after migrate from version 5.8 to 8 【发布时间】:2021-06-11 15:32:26 【问题描述】:我在Laravel 5.8
中有项目,我在Laravel 8
中创建了新项目,并将带有代码的文件移动到新项目中。
我的路线文件有路线:
use App\Http\Controllers\AccountController;
use Illuminate\Routing\Router;
/* @var $router \Illuminate\Routing\Router */
$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');
当我在 url 视图中输入 home
时,会显示。但是当我输入 /account/dashboard 我得到错误:
Illuminate\Contracts\Container\BindingResolutionException
Target class [register] does not exist.
中间件有问题?为什么使用 PageController 和 home 的第一个路由有效,但 account.dashboard 在这两种情况下都不起作用(首先已注释)
在RouteServiceProvider
我未注释行:
protected $namespace = 'App\\Http\\Controllers';
现在可以了,我忘了加app\Http\Kernel.php
:
protected $routeMiddleware = [
...
'admin' => AdminMiddleware::class,
];
路由器找不到admin
前缀
【问题讨论】:
你遵循 Laravel 的官方升级指南了吗?您需要迭代升级版本(5->6->7->8)。 This 可能有用 是的,我做到了。我安装了所有东西。我的网站显示在 Laravel 8 中,但是当我使用这个$router->group(['prefix' => 'account', 'middleware' ...
部分时我只有错误
您可以查看***.com/questions/63882034/…。
如果你输入account.dashboard
会发生什么?
好的,我找到了,在app\Http\Kernel.php
我忘了添加到`protected $routeMiddleware = [ ..., 'admin' => AdminMiddleware::class, ];` 并且路由器找不到admin
前缀
【参考方案1】:
正如罗伯特在评论部分指出的那样,app\Http\Kernel.php
'admin'
丢失了。显然,解决方案是向$routeMiddleware
数组中相应地添加一个项目,由 Robert 显示为
protected $routeMiddleware = [
...
'admin' => AdminMiddleware::class,
];
【讨论】:
以上是关于Laravel Target 类 [register] 从 5.8 版本迁移到 8 后不存在的主要内容,如果未能解决你的问题,请参考以下文章
Auth::routes(['register' => false]);不能在 laravel 8 中工作
Illuminate\Contracts\Container\BindingResolutionException .Target 类 [MarketsouhaibController] 不存在。拉拉