首页 > 解决方案 > 控制器类存在但未找到

问题描述

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

路线

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。仍然没有找到目标类。

标签: phplaravelcontroller

解决方案


Laravel 8中,$namespace值为 的属性默认App\Http\Controllers设置为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 提供了详细的答案。


推荐阅读