如何制作使用控制器数据的laravel视图,但仍允许控制器输出原始JSON?

时间:2014-09-08 17:42:26

标签: laravel laravel-routing

我有一个控制器,以原始JSON格式从数据库输出数据。

我希望它能够作为API运行,并允许任何人使用任何可以使用JSON的技术(即Angular,Jquery / Ajax)创建视图。

但是我也希望在Laravel中发表观点。

那么从Laravel创建视图的最佳做法是什么,它使用来自控制器的数据,同时仍允许控制器输出原始JSON?

我想到的选项是从视图中调用控制器(不好?)或创建额外的路径。

2 个答案:

答案 0 :(得分:0)

Route::get('sample', function ()
{
    $data = getDataFromSomewhere();

    if (Request::ajax())
    {
        return Response::json($data);
    }

    return View::make('some.view', compact('data))
});

答案 1 :(得分:0)

我会将API控制器分开,但如果您希望一个控制器处理所有响应格式,您可以执行类似的操作:

<强> URL:

mySite.com/getData?output=json

<强>控制器:

public function index()
{

    $data = MyModel::all();

    switch(Request::query('output')){
        case 'json':
            return Response::json($data, $this->responseCode, $this->accessControl);
        case 'xml':
            return Response::make($data, '200')->header('Content-Type', 'text/xml');
        default:
            return View::make('data.myData', compact($data));
    }

}