【问题标题】:Error on finding controller from Laravel API Router从 Laravel API 路由器查找控制器时出错
【发布时间】:2018-08-06 04:31:41
【问题描述】:

我创建了一个全新的 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`

我测试了网址

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.");

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

【问题讨论】:

    标签: laravel laravel-5 laravel-routing


    【解决方案1】:

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

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

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

    App\Providers\ResponseMacroServiceProvider::class
    

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      猜你喜欢
      • 2014-07-20
      • 1970-01-01
      • 1970-01-01
      • 2022-01-04
      • 2016-07-23
      • 2015-09-26
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多