Laravel 8:目标类不存在[重复]

Posted

技术标签:

【中文标题】Laravel 8:目标类不存在[重复]【英文标题】:Laravel 8: Target class does not exist [duplicate] 【发布时间】:2021-01-26 12:08:46 【问题描述】:

我正在使用 Laravel 8 开发我的项目。我制作了一个名为BackendController 的控制器,并添加了这个index() 方法来调用刀片:

public function index()

    return view('website.backend.dashboard.index');

web.php 我添加了这条路线:

Route::get('/dashboard', 'BackendController@index');

但是当我转到/dashboard 时,它说:

lluminate\Contracts\Container\BindingResolutionException 目标类 [BackendController] 不存在。

我不知道为什么会打印这个,因为控制器已经存在!所以如果你知道如何解决它,请帮助我......

提前致谢。

【问题讨论】:

【参考方案1】:

Laravel 8 更新了它的路由。 已记录,请查找Routing Namespace Updates 部分

在新的 Laravel 8.x 应用程序中,控制器路由定义应该使用标准的 PHP 可调用语法来定义;

use App\Http\Controllers\UserController;

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

新文档在这里; https://laravel.com/docs/8.x/routing#basic-routing

【讨论】:

【参考方案2】:

总之,你应该这样定义你的路线; Route::get('/dashboard', [\App\Http\Controllers\BackendController::class, 'index']).

更具体一点; 在之前的 Laravel 版本中,RouteServiceProvider 包含一个 $namespace 属性。此属性的值将自动添加到控制器路由定义和调用 action helper / URL::action 方法上。在 Laravel 8.x 中,该属性默认为 null。这意味着 Laravel 不会自动为命名空间添加前缀。因此,在新的 Laravel 8.x 应用程序中,控制器路由定义应该使用标准的 PHP 可调用语法来定义:

use App\Http\Controllers\UserController;

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

[复制自 Laravel 文档。请参阅 https://laravel.com/docs/8.x/releases 中的“路由命名空间更新”部分]

【讨论】:

【参考方案3】:

在之前的 Laravel 版本中,RouteServiceProvider 包含一个 $namespace 属性。此属性的值将自动添加到控制器路由定义和调用 action 帮助器 / URL::action 方法上。在 Laravel 8.x 中,该属性默认为 null。这意味着 Laravel 不会自动为命名空间添加前缀。 releases#laravel-8

所以,试试这个:

use App\Http\Controllers\BackendController;
Route::get('/dashboard',  [BackendController::class, 'show'])->name('backend.index');

【讨论】:

【参考方案4】:

使用以下语法:Route::get('/dashboard', [BackendController::class, 'index'])->name('backend.index');

见laravel docs

【讨论】:

以上是关于Laravel 8:目标类不存在[重复]的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 5.1 ReflectionException 类不存在[重复]

Laravel 8 包开发——Route Target 类不存在

目标类 [AuthController] 不存在 Laravel 8 [重复]

在 Laravel 5.x 中获取“类不存在”

目标类 [UserController] 不存在 Laravel 8

目标类控制器不存在 - Laravel 8