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 [重复]