【问题标题】:Illuminate\Contracts\Container\BindingResolutionException : Target class [App\Http\Controllers\Admin\DashboardadController] does not existIlluminate\Contracts\Container\BindingResolutionException:目标类 [App\Http\Controllers\Admin\DashboardadController] 不存在
【发布时间】:2019-12-16 12:18:33
【问题描述】:

我正在使用 Laravel 6.0,并尝试使用

列出我的所有路线

php 工匠路线:列表

失败并返回:

      Illuminate\Contracts\Container\BindingResolutionException  : Target class [App\Http\Controllers\Admin\DashboardadController] does not exist.

  at D:\xampp\htdocs\myws\vendor\laravel\framework\src\Illuminate\Container\Container.php:805
    801| 
    802|         try {
    803|             $reflector = new ReflectionClass($concrete);
    804|         } catch (ReflectionException $e) {
  > 805|             throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);
    806|         }
    807| 
    808|         // If the type is not instantiable, the developer is attempting to resolve
    809|         // an abstract type such as an Interface or Abstract Class and there is

  Exception trace:

  1   Illuminate\Foundation\Console\RouteListCommand::Illuminate\Foundation\Console\{closure}(Object(Illuminate\Routing\Route))
      [internal]:0

  2   ReflectionException::("Class App\Http\Controllers\Admin\DashboardadController does not exist")
      D:\xampp\htdocs\myws\vendor\laravel\framework\src\Illuminate\Container\Container.php:803

我的路线

Route::group([ 'as'=>'admin.', 'prefix'=>'admin', 'namespace'=> 'Admin', 'middleware' => ['auth','admin']],
    function(){
        Route::get('dashboard', 'DashboardadController@index')->name('dashboard');
    });

    Route::group([ 'as'=>'author.', 'prefix'=>'author', 'namespace'=> 'Author', 'middleware' => ['auth','author']],
    function(){
        Route::get('dashboard', 'DashboardauController@index')->name('dashboard');
    });

我的 RouteServiceProvider

受保护的 $namespace = 'App\Http\Controllers';

知道如何调试这个问题吗?

提前非常感谢!

【问题讨论】:

  • 您尝试访问的 Controller 的类名是什么,您在哪个命名空间中声明了它,它在哪个文件夹中?
  • 检查路由中控制器的拼写——它实际上是“DashboardadController”还是应该是“DashboardController”?

标签: laravel laravel-6


【解决方案1】:

您的错误是因为您删除了DashboardController 或更改了它的命名空间,而您在其他地方导入了它,而您忘记删除它的使用或更正它的命名空间

当您运行php artisan route:list 时,它将执行每个控制器一次,如果任何控制器中出现错误,该命令将失败并抛出异常,因此我认为最好的解决方案是在您的控制器中搜索并找到导致该控制器这个错误,或者如果您使用的是良好的 IDE,它们通常具有 find in path 功能,可以在路径或整个项目中搜索给定文本

编辑
也使用此约定来确保您的命名空间是正确的
但不要忘记导入仪表板控制器

Route::group([ 'as'=>'admin.', 'prefix'=>'admin', 'middleware' => ['auth','admin']], function(){
        Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard');
    });

    Route::group([ 'as'=>'author.', 'prefix'=>'author', 'middleware' => ['auth','author']], function(){
        Route::get('dashboard', [DashboardController::class, 'index'])->name('dashboard');
    });

【讨论】:

    【解决方案2】:

    试试这个:

    Route::resource('post/', DashboardController::class);
    

    【讨论】:

      【解决方案3】:

      您的Route::group 不应包含namespace 键。这导致双重声明不存在的路径。很难找到。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-04
        • 2021-05-12
        • 2021-07-13
        • 2021-09-15
        • 1970-01-01
        • 2021-08-17
        • 2021-09-02
        • 1970-01-01
        相关资源
        最近更新 更多