Illuminate\Contracts\Container\BindingResolutionException .Target class [MarketsouhaibController] does not exist. laravel 8

7 浏览
0 Comments

Illuminate\Contracts\Container\BindingResolutionException .Target class [MarketsouhaibController] does not exist. laravel 8

我的laravel 8应用程序出现以下错误:

Illuminate\Contracts\Container\BindingResolutionException .目标类[MarketsouhaibController]不存在。laravel 8

显示以下stracktrace:

try {
  $reflector = new ReflectionClass($concrete);
} catch (ReflectionException $e) {
  throw new BindingResolutionException("目标类[$concrete]不存在。", 0, $e);
}

在教学视频中它能工作,但在我的laravel 8中却不工作...

0
0 Comments

问题出现的原因是控制器和路由的命名空间不一致。解决方法是确保控制器和路由的命名空间相同。

在Laravel 8中,当我们尝试访问一个不存在的控制器时,可能会遇到类似的错误信息:Illuminate\Contracts\Container\BindingResolutionException .Target class [MarketsouhaibController] does not exist. 这意味着Laravel无法解析绑定的类。

解决此问题的方法是检查控制器和路由的命名空间是否一致。在Laravel中,控制器的命名空间通常与其所在的文件夹路径相对应。因此,我们需要确保控制器文件中的命名空间与路由文件中的命名空间相匹配。

例如,如果我们有一个控制器文件位于app/Http/Controllers/目录下的MarketsouhaibController.php,那么控制器文件的命名空间应该是namespace App\Http\Controllers;。

同时,我们需要确保路由文件中的命名空间也是相同的。在web.php或api.php文件中,我们需要检查use语句中指定的命名空间是否与控制器文件的命名空间一致。

一旦我们确保了控制器和路由的命名空间一致,问题就可以解决了。我们可以重新运行Laravel应用程序并尝试访问相应的路由,这时就不会再出现类似的错误信息了。

总结起来,当我们遇到类似于Illuminate\Contracts\Container\BindingResolutionException .Target class [MarketsouhaibController] does not exist的错误时,我们需要检查控制器和路由的命名空间是否一致。只需要确保控制器文件和路由文件中的命名空间相同,问题就可以解决了。

0
0 Comments

在Laravel 8中出现了"Illuminate\Contracts\Container\BindingResolutionException .Target class [MarketsouhaibController] does not exist."的错误。这个问题的原因是在代码中引用了一个名为"MarketsouhaibController"的类,但是该类并不存在。

要解决这个问题,我们可以运行以下命令:

composer dump-autoload

这个命令会重新生成自动加载文件,确保所有类的正确加载。这样,当我们再次尝试使用"MarketsouhaibController"类时,就不会再出现错误。

通过运行上述命令,我们成功解决了"Illuminate\Contracts\Container\BindingResolutionException .Target class [MarketsouhaibController] does not exist."的问题。重新生成自动加载文件可以确保我们的类能够正确加载,从而避免了类不存在的错误。

0
0 Comments

在Laravel 8中出现了"Illuminate\Contracts\Container\BindingResolutionException .Target class [MarketsouhaibController] does not exist"这个问题。这个问题的出现是因为在Laravel 8中,原始的控制器路由语法已经改变了。

在之前的版本中,我们使用的是类似于Route::get('/', 'MarketsouhaibController')这样的语法,但是从Laravel 8开始,他们对此进行了改变。

从Laravel 8开始,引入了一种新的语法作为新的标准。现在你有两个选择。你可以使用字符串语法PHP可调用语法,如下所示:

//字符串语法
Route::get('/', 'App\Http\Controllers\MarketsouhaibController')

//PHP可调用语法
use App\Http\Controllers\MarketsouhaibController; //必须放在路由的顶部
Route::get('/', [MarketsouhaibController::class, 'index']);

但是,如果你仍然想使用原始的自动前缀控制器路由,只需要按照以下步骤进行操作:

  1. 导航到你的RouteServiceProvider
  2. 添加protected $namespace = 'App\Http\Controllers';

个人建议,在开始之前请阅读文档。文档的存在是有原因的。我提供的解决方案在Laravel提供的文档升级指南中也可以找到。

这样可以解决我的问题。非常感谢。

0