[英]I can't get the Controller in the laravel
我在訪問我通過終端創建的控制器時遇到問題:
php artisan make:controller Admin\TestController
這是我創建的 TestController 類
<?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的升級文檔,您可以像這樣使用 PHP 可調用語法:
use App\Http\Controllers\Admin\TestController;
Route::get('/test', [TestController::class, 'teste']);
這是因為您使用的是最新版本的 Laravel。 在此處閱讀最新 Laravel 版本的文檔!
Yupp,如上所述,對於新的 Laravel 8.x 版,在 routes.php 中,您必須以數組格式提及控制器類,例如
<?php
use App\Http\Controllers\Controller_Name;
Route::get('/', [Controller_Name::class,'Function_Name']); ?>
也不要忘記導入該控制器類。
這是 Laravel 8.x 參考路由的鏈接。
希望能幫助到你。 謝謝你
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.