gpt4 book ai didi

php - Laravel 无法识别 Controller __invoke()

转载 作者:行者123 更新时间:2023-12-05 02:03:06 33 4
gpt4 key购买 nike

无法调试这个简单的路由问题,尽管已经看了几个类似的帖子。

TestController is not invokable. The controller class TestControlleris not invokable. Did you forget to add the __invoke method or is thecontroller's method missing in your routes file?

我在 Stack 上尝试了尽可能多的排列,但没有任何改变。我已经确认了简单的路由,即:

Route::get('/', function () {
return view('welcome');
});

有效,但我无法让 Controller 工作。我已经清除缓存并取消注释 $namespace,没有任何区别。事实上,错误消息似乎并没有改变,这让我相信这不是路由而是与 Controller 有关。但我是新手,没看到。

来自 web.php:

Route::get('/test', TestController::class);

测试 Controller .php:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class TestController extends Controller {
public function __invoke() {
return view('welcome');
}
}

最佳答案

当您没有 Controller 的 FQCN 的 use 语句时,通常会发生这种情况。

在声明路由的路由文件中,确保添加了 Controller 命名空间的 use 语句。特别是自 Laravel 8.x 以来, Controller 的默认命名空间未设置为 App\Http\Controllers,这与早期版本不同。

//routes file
use App\Http\Controllers\TestController;

Route::get('/test', TestController::class);

作为旁注,如果您使用可调用 Controller 类仅返回一个 View ,则可以改用 Route::view() 方法

//Assuming that you have a resources/views/test.blade.php 
Route::view('/test', 'test');

关于php - Laravel 无法识别 Controller __invoke(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65449891/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com