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