我有一个控制器,以原始JSON格式从数据库输出数据。
我希望它能够作为API运行,并允许任何人使用任何可以使用JSON的技术(即Angular,Jquery / Ajax)创建视图。
但是我也希望在Laravel中发表观点。
那么从Laravel创建视图的最佳做法是什么,它使用来自控制器的数据,同时仍允许控制器输出原始JSON?
我想到的选项是从视图中调用控制器(不好?)或创建额外的路径。
答案 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));
}
}