Illuminate\Contracts\Container\BindingResolutionException .Target 类 [MarketsouhaibController] 不存在。拉拉

Posted

技术标签:

【中文标题】Illuminate\\Contracts\\Container\\BindingResolutionException .Target 类 [MarketsouhaibController] 不存在。拉拉维尔 8【英文标题】:Illuminate\Contracts\Container\BindingResolutionException .Target class [MarketsouhaibController] does not exist. laravel 8Illuminate\Contracts\Container\BindingResolutionException .Target 类 [MarketsouhaibController] 不存在。拉拉维尔 8 【发布时间】:2021-07-13 14:24:02 【问题描述】:

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

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

显示以下轨迹:

try 
  $reflector = new ReflectionClass($concrete);
 catch (ReflectionException $e) 
  throw new BindingResolutionException("Target class [$concrete] does not exist.", 0, $e);

在教程视频中它可以工作,但我的 laravel 8 不能工作....

【问题讨论】:

这能回答你的问题吗? Target class does not exist. problem in laravel 8 你能添加你的 api.php/web.php 文件吗? 这能回答你的问题吗? Target class controller does not exist - Laravel 8 【参考方案1】:

由于缺乏细节,我猜您使用的是原始控制器路由语法Route::get('/', 'MarketsouhaibController@index'),我们都使用了很长时间的语法,这是一个常见问题。这种语法一直有效到 Laravel 7。从 8 开始,他们改变了它。

从 Laravel 8 开始,引入了一种新语法,并且是新标准。你现在有两个选择。您可以使用 String 语法PHP 可调用语法,如下所示。

//string syntax
Route::get('/', 'App\Http\Controllers\MarketsouhaibController@index')
//php callable syntax
use App\Http\Controllers\MarketsouhaibController; //must be placed at the top of routes

Route::get('/', [MarketsouhaibController::class, 'index']);

但如果您仍想使用原始的自动前缀控制器路由,只需按照以下步骤操作即可。

    导航到您的RouteServiceProvider 添加protected $namespace = 'App\Http\Controllers';

个人建议,在开始之前请阅读文档。那里是有原因的。我发布的解决方案也可以在他们发布的Documentation provided by Laravel 和Upgrade Guide 中找到。

【讨论】:

这对我的问题进行了排序。非常感谢【参考方案2】:

运行这个:

composer dump-autoload

【讨论】:

请简要描述您的答案如何解决问题。谢谢!

以上是关于Illuminate\Contracts\Container\BindingResolutionException .Target 类 [MarketsouhaibController] 不存在。拉拉的主要内容,如果未能解决你的问题,请参考以下文章