Laravel 目标类 [register] 在从版本 5.8 迁移到 8 后不存在。
Laravel 目标类 [register] 在从版本 5.8 迁移到 8 后不存在。
我在 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');
当我在网址中输入 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.8升级到8后,出现了"Target class [register] does not exist"的错误。原因是在app\Http\Kernel.php文件中缺失了'admin'的配置。解决方法是在$routeMiddleware数组中添加'admin'项,并指定对应的中间件类AdminMiddleware。具体的解决方法如下所示:
首先,在app\Http\Kernel.php文件中找到$routeMiddleware数组,然后在该数组中添加'admin'项,指定对应的中间件类AdminMiddleware。修改后的代码如下:
protected $routeMiddleware = [ ... 'admin' => AdminMiddleware::class, ];
保存修改后的文件,重新运行应用程序,问题应该就得到了解决。这样,我们就成功解决了"Laravel Target class [register] does not exist after migrate from version 5.8 to 8"的问题。