【问题标题】:Target class [PostController] does not exist. but it dose目标类 [PostController] 不存在。但它剂量
【发布时间】:2021-07-15 05:41:56
【问题描述】:

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

路线web.php

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

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

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');
    }
}

【问题讨论】:

标签: laravel laravel-8


【解决方案1】:

在 (web.php) 的顶部使用这一行也许你的问题会解决

 use App\Http\Controllers\PostController;

【讨论】:

    【解决方案2】:

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

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

    protected $namespace = 'App\\Http\\Controllers';
    

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

    use App\Http\Controllers\PageController;
    
    Route::get('/page', [PageController::class, 'index']);
    

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

    Route::get('/page', 'App\Http\Controllers\PageController@index');
    

    【讨论】:

    • 现在它显示了这个 Illuminate\Database\Eloquent\Builder::create(): 参数 #1 ($attributes) 必须是数组类型,给定字符串,调用
    • 那是因为您正在对数据进行 JSON 编码。试试Post::create($request->only('title', 'body', ...))
    • 谢谢,这是错误:--- 将 [title] 添加到可填充属性以允许在 [App\Models\Post] 上进行批量分配。
    • 你可以接受这个答案,因为它解决了你原来的问题
    • 对不起,我标记错人了! @AbdullahAlShahed
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-07-10
    • 1970-01-01
    • 2021-03-06
    • 2019-02-20
    • 2021-01-12
    • 1970-01-01
    相关资源
    最近更新 更多