【问题标题】:Target class [Admin\UserController] does not exist目标类 [Admin\UserController] 不存在
【发布时间】:2022-06-23 17:14:46
【问题描述】:

我已将我的项目路由分为包含客户端路由的home.php 和包含服务器端路由的admin.php

这是我的RouteServiceProvider.php

public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
                ->namespace($this->namespace)
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web/home.php'));

            Route::middleware(['web', 'auth.admin'])
                ->namespace($this->namespace . '\Admin')
                ->prefix('admin')
                ->group(base_path('routes/web/admin.php'));
        });
    }

如您所见,我已指定 ->namespace($this->namespace . '\Admin'),因为此目录中放置了管理控制器:

App\Http\Controllers\Admin\...

然后在admin.php,我添加了这条路线:

Route::resource('users', UserController::class);

但我收到此错误:

Target class [Admin\UserController] does not exist.

那么这里出了什么问题?如何解决此问题并从管理员正确调用控制器?

【问题讨论】:

  • 你能在此处添加完整的 UserController 文件吗……也请检查该 userController 的命名空间……
  • @SaravanaSai 它有这个命名空间:namespace App\Http\Controllers\Admin;
  • 你是否在你的路由文件中正确导入了检查我...我认为它应该是这样的 'Route::resource('users',App\Http\Controllers\Admin\ UserController: :班级); ' 试试这个

标签: php laravel laravel-8


【解决方案1】:

您可能需要添加 use 语句来指出您的控制器在路由文件中的位置。

例如:

use App\Http\Controllers\Admin\UserController;

【讨论】:

    【解决方案2】:

    命名空间更改是正确的。

    问题是缺少使用。

    因此,要更正它,请更改您的路线文件:

    use App\Http\Controllers\Admin\UserController; // <-- add this.
    
    Route::resource('users', UserController::class);
    

    【讨论】:

      【解决方案3】:

      你需要为RouteServiceProvider.php调整这个:

      public function boot()
          {
              $this->configureRateLimiting();
      
              $this->routes(function () {
                  Route::prefix('api')
                      ->middleware('api')
                      ->namespace($this->namespace)
                      ->group(base_path('routes/api.php'));
      
                  Route::middleware('web')
                      ->namespace('\App\Http\Controllers')
                      ->group(base_path('routes/web/home.php'));
      
                  Route::middleware(['web', 'auth.admin'])
                      ->namespace('\App\Http\Controllers\Admin')
                      ->prefix('admin')
                      ->group(base_path('routes/web/admin.php'));
              });
          }
      

      然后你可以运行这个:

      Route::resource('users', 'UserController');
      

      【讨论】:

        猜你喜欢
        • 2021-01-06
        • 2021-04-09
        • 2021-03-06
        • 2021-11-21
        • 1970-01-01
        • 2021-10-22
        • 2021-07-13
        • 2016-09-16
        • 2019-09-30
        相关资源
        最近更新 更多