【问题标题】:Target class [Admin\FirstController] does not exist目标类 [Admin\FirstController] 不存在
【发布时间】:2021-10-22 17:28:35
【问题描述】:

我在尝试在命名空间“Instructor”下创建路由器时遇到问题,如下图所示:

Route in instructor page in routes file

而控制器中命名空间Instructor下的方法是:

method inside the controller file

运行路线时它一直给我以下错误:

Error message

谁能帮我解决这个问题,因为我是 larevel 的新手,所以我不是定义包和依赖项的专家。

【问题讨论】:

  • 我不知道它是否能完全解决你的问题,但是当这些奇怪的错误发生时,我总是运行(只是为了确定):composer dumpautoloadphp artisan config:cache

标签: php laravel routes laravel-8


【解决方案1】:

在 Laravel 8 中,您可以在路由文件中简单地执行以下操作:

Route::get('instructors', [\App\Http\Controllers\Instructor\FirstController::class, 'showUserName']);

或带引号:

Route::get('instructors', ['\App\Http\Controllers\Instructor\FirstController', 'showUserName']);

或者用use声明:

use App\Http\Controllers\Instructor\FirstController;

Route::get('instructors', [FirstController::class, 'showUserName']);

然后您可以将所有use 语句放在顶部。大多数 IDE 可以自动隐藏它们,这样你就有了一个干净的路由文件。

【讨论】:

  • 检查最后,我很快更新了我的答案,::class最后不见了,但你好像以前看过,对不起!
  • 它使用这个结构:Route::get('instructors',' [\App\Http\Controllers\Instructor\FirstController', 'showUserName']);非常感谢
  • 是的,您可以同时使用'\App\Http\Controllers\Instructor\FirstController' 或不带引号:\App\Http\Controllers\Instructor\FirstController::class(注意末尾的::class)。第二种方法的好处是可以通过使用use 语句来缩短它。我会更新我的答案给你看。
【解决方案2】:

在 Laravel 8 中你可以这样做:

Route::get('your-route', [App\Http\Controllers\Instructor\YourController::class, 'methodName']);

或者您可以在 RouteServiceProvider 中取消注释以下行

// protected $namespace = 'App\\Http\\Controllers';

【讨论】:

    猜你喜欢
    • 2022-06-23
    • 2020-06-18
    • 2021-09-15
    • 1970-01-01
    • 1970-01-01
    • 2021-11-21
    • 2021-01-12
    • 2018-06-07
    • 1970-01-01
    相关资源
    最近更新 更多