我无法在 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 8 的 upgrade 文档,您可以像这样使用 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 指的是路由。
希望对您有所帮助。谢谢
我在访问通过终端创建的控制器时遇到问题:
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 8 的 upgrade 文档,您可以像这样使用 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 指的是路由。
希望对您有所帮助。谢谢