Laravel 目标类 [register] 在从版本 5.8 迁移到 8 后不存在。

12 浏览
0 Comments

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 前缀。

0
0 Comments

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"的问题。

0