簡體   English   中英

使用 php Laravel 控制器和路由器時,函數()不存在錯誤

[英]Function() does not exist error using php Laravel controllers and router

我有一個路由器 web.php 和兩個控制器。 一個是帶有我的索引/主頁的 HomeController,另一個是帶有隨機生成的數據庫的 InventoryController。 當我在本地主機上運行它時,我目前收到一個錯誤,即存在“反射異常並且 Function() 不存在”。

我的路由器 web.php:

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', [\App\Http\Controllers\HomeController::class], 'pages.index');

Route::get('/inventories', [\App\Http\Controllers\InventoryController::class], 'index');
{
    return View('pages.inventories');
};

我的 HomeController 代碼:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

/**
 *
 */
class HomeController extends Controller
{
    public function index() {
        return view('pages.index');
    }
}

我的 InventoryController 代碼:

<?php

namespace App\Http\Controllers;

use App\Models\Inventory;
use Illuminate\Http\Request;

/**
 *
 */

class InventoryController extends Controller
{
    public function index() {
        $inventories = Inventory::all();
        return view('pages.inventories',[
            "inventories" => $inventories
        ]);
    }
}

我知道我不想使用 __invoke() 因為將來會添加功能和內容。

Route::get('/', [\App\Http\Controllers\HomeController::class, 'index']);

Route::get('/inventories', [\App\Http\Controllers\InventoryController::class, 'index']);

而且第二個參數應該是大量在 controller 名稱方法名稱是 index 而不是 pages.index

您誤用了您的路由器定義,您需要定義數組的第二個參數,即它應該命中的 controller 上的 function。

Route::get('/', [\App\Http\Controllers\HomeController::class, 'index'])->name('pages.index');
Route::get('/inventories', [\App\Http\Controllers\InventoryController::class, 'index'])->name('index'');

似乎您還使用第三個參數作為命名,例如。 pages.index我會改用->name()調用。

可以這樣寫

<?php

use Illuminate\Support\Facades\Route;

Route::get('/', [ 
    \App\Http\Controllers\HomeController::class, 
    'pages.index' 
]);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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