尝试使用可调用 Controller ,但似乎找不到__invoke方法?
Invalid route action: [App\Http\Controllers\App\Http\Controllers\MainController].
它似乎在以下方面返回true:
if (! method_exists($action, '__invoke')) {
throw new UnexpectedValueException("Invalid route action: [{$action}].");
}
路线:
<?php
Route::get('/', \App\Http\Controllers\MainController::class);
主 Controller :
<?php
namespace App\Http\Controllers;
class MainController extends Controller
{
public function __invoke()
{
dd('main');
}
}
最佳答案
Laravel默认情况下假设您的 Controller 将位于App\Http\Controllers\
。因此,当您将完整路径添加到 Controller 时,Laravel将在App\Http\Controllers\App\Http\Controllers\MainController
处进行检查。
要解决它,只需在注册路由时删除 namespace ,然后像这样注册它:
Route::get('/', MainController::class);
或者,可以通过从位于
->namespace($this->namespace)
文件夹中的mapWebRoutes()
类上的RouteServiceProvider
方法删除App\Providers
来停止此行为。然后,您可以像这样注册您的路线:Route::get('/', \App\Http\Controllers\MainController::class);
关于php - Laravel:不采用__invoke方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57501421/