目标类 [PostController] 不存在。但它剂量

Abd*_*hed 2 laravel laravel-8

我得到的错误是:Target class [PostController] does not exist但确实如此。

路线web.php

Route::get('/post', 'PostController@index');
Route::post('/post', 'PostController@store');

Route::get('/', function () {
    return view('create');
});
Run Code Online (Sandbox Code Playgroud)

PostController.php

namespace App\Http\Controllers;

use App\Post;
use Redirect,Response;
use Illuminate\Http\Request;

class PostController extends Controller
{
    public function index()
    {
        return view('create');
    }

    public function store(Request $request)
    {
        $data = json_encode($request);
        Post::create($data);

        return back()->withSuccess('Data successfully store in json format');
    }
}
Run Code Online (Sandbox Code Playgroud)

pkt*_*ndu 5

此错误出现在 Laravel 新版本中,因为没有命名空间前缀应用于您的路由加载到的路由组。在旧版本的 Laravel 中,RouteServiceProvider包含一个$namespace属性,该属性会自动添加到控制器路由的前缀。

要解决此问题,您可以转到RouteServiceProvider并取消注释该行:

protected $namespace = 'App\\Http\\Controllers';
Run Code Online (Sandbox Code Playgroud)

或者您可以使用基于闭包的语法:

use App\Http\Controllers\PageController;

Route::get('/page', [PageController::class, 'index']);
Run Code Online (Sandbox Code Playgroud)

另一种方法是为控制器使用完全限定的类名:

Route::get('/page', 'App\Http\Controllers\PageController@index');
Run Code Online (Sandbox Code Playgroud)