我无法在 laravel 中获取控制器

I can't get the Controller in the laravel

我在访问通过终端创建的控制器时遇到问题:

php artisan make:controller Admin\TestController

这是我创建的 TestControllerclass

<?php

namespace App\Http\Controllers\Admin;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;

class TestController extends Controller
{
    public function teste()
    {
        return 'Teste Controller';
    }
}

这是路由文件,我将在其中尝试调用 teste 方法。默认情况下,正确的做法是调用 Admin 文件夹中的 TestController。

<?php

use Illuminate\Support\Facades\Route;

Route::get('/test', 'Admin\TestController@teste');

在我更新页面时Web.php文件中,出现信息:

Illuminate\Contracts\Container\BindingResolutionException Target class
[Admin\TestController] does not exist.

只有当我放入完整目录时才有效:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/test', 'App\Http\Controllers\Admin\TestController@teste');

但我不想放完整的目录,因为代码更精简,更容易理解。

如何在不放置完整目录的情况下调用TestController?

我正在使用 Laravel 框架:8.9.0

我正在使用 php:7.2.19 (cli)

根据 Laravel 8upgrade 文档,您可以像这样使用 PHP 可调用语法:

use App\Http\Controllers\Admin\TestController;

Route::get('/test', [TestController::class, 'teste']);

这是因为您使用的是最新版本的 Laravel。 阅读最新 Laravel 版本的文档 here!

Yupp,如上所述,对于新的Laravel版本8.x,在routes.php中,你必须提到控制器class作为数组格式,例如

<?php
use App\Http\Controllers\Controller_Name;

Route::get('/', [Controller_Name::class,'Function_Name']); ?>

另外不要忘记导入控制器 class。

link Laravel 8.x 指的是路由。

希望对您有所帮助。谢谢