使用php Laravel控制器和路由器的Function()不存在错误[关闭]
Posted
技术标签:
【中文标题】使用php Laravel控制器和路由器的Function()不存在错误[关闭]【英文标题】:Function() does not exist error using php Laravel controllers and router [closed] 【发布时间】:2022-01-19 12:15:44 【问题描述】:我有一个路由器 web.php 和两个控制器。一个是带有我的索引/主页的 HomeController,另一个是带有随机生成的数据库的 InventoryController。 当我在 localhost 上运行它时,我目前收到一个错误,即存在“反射异常并且 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(),因为将来会添加功能和内容。
【问题讨论】:
删除“页面”。在您的路线文件上。您应该使用您希望在 HomeController 上调用的方法名称。 Route::get('/', [\App\Http\Controllers\HomeController::class], 'index'); @Santos 第三个参数是路由名称,所以“pages.index”是有效的。问题是缺少数组的第二个元素,正如您所说,它应该包含方法名称。 【参考方案1】:Route::get('/', [\App\Http\Controllers\HomeController::class, 'index']);
Route::get('/inventories', [\App\Http\Controllers\InventoryController::class, 'index']);
第二个参数也应该很大 在控制器名称中,方法名称是 index 而不是 pages.index
【讨论】:
【参考方案2】:您误用了路由器定义,您需要定义数组的第二个元素,作为它应该命中的控制器上的方法。
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()
调用。
【讨论】:
【参考方案3】:你可以这样写,
<?php
use Illuminate\Support\Facades\Route;
Route::get('/', [
\App\Http\Controllers\HomeController::class,
'pages.index'
]);
【讨论】:
以上是关于使用php Laravel控制器和路由器的Function()不存在错误[关闭]的主要内容,如果未能解决你的问题,请参考以下文章