从 Laravel API 路由器中查找控制器时出错

Error on finding controller from Laravel API Router

我创建了一个新的 Laravel 框架。

我创建了一个名为 PostsController 的控制器:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\Post;
use App\Http\Controllers\Controller;

class PostsController extends Controller
{
    public function index()
    {
        $posts = Post::get();

        return response()->success(compact('posts'));
    }
}

然后我在文件中创建了一个路由 api.php:

Route::get('posts', 'PostsController@index');

我运行命令

$ php artisan serve`

我测试了 URL

localhost:8000/api/posts

发生此错误:

BadMethodCallException
Method Illuminate\Routing\ResponseFactory::success does not exist.

file: vendor/laravel/framework/src/Illuminate/Support/Traits/Macroable.php
line: 100

throw new BadMethodCallException("Method {$class}::{$method} does not exist.");

我不明白为什么会这样。请帮助我。

ResponseFactory 上没有 success 方法。您可以找到可用的方法 here.

您正在调用未注册到 responseFactory.To 使用成功方法的宏函数,创建您的自定义 responseServiceProvider 并将其写入 boot()

Response::macro('success',function($data){
            return Response::json([
                'data'=>$data,
            ]) ;
        });

然后通过将您的 Class 名称添加到名为 providers 的数组,将您的 ResponseServiceProvider 注册到 app.php。这就是你添加到数组的方式

App\Providers\ResponseMacroServiceProvider::class