控制器 Class 存在但未找到

Controller Class Exists But Not Found

由于某种原因,目标控制器 class 未找到,即使它已经存在于正确的路径中。

路线

Route::post('/send', 'MailController@send');

我的控制器路径是App->Http->Controllers

这是我的控制器:

<?php
namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Facades\Mail;
use App\Mail\SendMail;

class MailController extends Controller{
    function index() {
        ...
    }
    function send(Request $request) {
        ...
    }
}

我已经尝试过 composer dump-autoload。我使用的是 laravel 框架 8.0,所以我也尝试还原并使用 7.24。仍然找不到目标 class。

Laravel 8中,值为App\Http\Controllers$namespace属性默认设置为null,所以需要定义:

变化:

Route::post('/send', 'MailController@send');

到,

use App\Http\Controllers\UserController;

Route::post('/send', [MailController::class, 'send']);

或者,使用字符串语法:

Route::get('/users', 'App\Http\Controllers\MailController@send');

lagbox 提供了一个细节