Php 从路由模型绑定中返回Laravel 4中的JSON响应

Php 从路由模型绑定中返回Laravel 4中的JSON响应,php,angularjs,laravel,laravel-4,Php,Angularjs,Laravel,Laravel 4,我正在创建一个API来访问我的博客条目,而不是Laravel模型绑定自动返回一个404,我宁愿返回一个200,以及一些与API控制器返回的格式相同的JSON 我使用下面的代码,当返回JSON响应时,它在控制器内工作,但我无法使它在Route::bind内工作,相反,JSON输出如下所示: {"success":true,"data":{"headers":{}}} 下面是我在app/global.php中的代码 Route::group(array('prefix' => '/api/b

我正在创建一个API来访问我的博客条目,而不是Laravel模型绑定自动返回一个404,我宁愿返回一个200,以及一些与API控制器返回的格式相同的JSON

我使用下面的代码,当返回JSON响应时,它在控制器内工作,但我无法使它在Route::bind内工作,相反,JSON输出如下所示:

{"success":true,"data":{"headers":{}}}
下面是我在app/global.php中的代码

Route::group(array('prefix' => '/api/blog'),function() {
    Route::bind('blog', function($id) {
        $Blog = Blog::find($id);
        if (!$Blog) {
            return Response::json(array('status' => false, 'message' => 'Blog not found'), 200);
        }
    });

    Route::get('index', array('uses' => 'BlogController@index'));
    Route::get('create', array('uses' => 'BlogController@create'));
    Route::get('read/{blog}', array('uses' => 'BlogController@read'));
});
如果我尝试在JSON响应中返回一个空数组,它甚至会这样做,如下所示:

return Response::json(array(), 200);

如果您真的想使用非标准RESTAPI,那么您需要自己实现API方法,而不是使用Route::bind


在控制器方法中获取输入参数,手动解析雄辩的问题,然后发送您想要的响应。

经过一番思考,我意识到我可以定义一个要抛出的新异常,然后简单地捕获该异常类型

Route::group(array('prefix' => '/api/blog'),function() {
    Route::bind('blog', function($id) {
        $Blog = Blog::find($id);
        if (!$Blog) {
            throw new ApiException('Blog not found');
        }
    });
    Route::get('index', array('uses' => 'BlogController@index'));
    Route::get('create', array('uses' => 'BlogController@create'));
    Route::get('read/{blog}', array('uses' => 'BlogController@read'));
});
class ApiException extends Exception {}
App::error(function(ApiException $ex) {
    return Response::json(array('status' => false, 'message' => $ex->getMessage()));
});

我搞砸了我的Route::group的格式,但仅此而已。谢谢,理想情况下我会使用REST API,不幸的是,我并没有得到那个奢侈的待遇,因为我提供的代码就是一个例子,我正在参与一个新项目,在这个项目中,事情已经以某种方式完成了。