簡體   English   中英

我無法在 Laravel 中獲取控制器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM