Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何创建一个使用来自控制器的数据但仍允许控制器输出原始JSON的laravel视图?_Laravel_Laravel Routing - Fatal编程技术网

如何创建一个使用来自控制器的数据但仍允许控制器输出原始JSON的laravel视图?

如何创建一个使用来自控制器的数据但仍允许控制器输出原始JSON的laravel视图?,laravel,laravel-routing,Laravel,Laravel Routing,我有一个控制器,它以原始JSON格式从数据库输出数据 我希望它可以作为一个API,允许任何人使用任何可以使用JSON的技术(如Angular、Jquery/Ajax)来创建视图 不过,我也想在拉雷维尔发表一点看法 那么,从Laravel创建一个视图的最佳实践是什么,该视图使用来自控制器的数据,同时仍然允许控制器输出原始JSON 我考虑的选项是从视图调用控制器(不好?)或创建额外的路由。Route::get('sample',function() { $data=getdatafromwhere(

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

我希望它可以作为一个API,允许任何人使用任何可以使用JSON的技术(如Angular、Jquery/Ajax)来创建视图

不过,我也想在拉雷维尔发表一点看法

那么,从Laravel创建一个视图的最佳实践是什么,该视图使用来自控制器的数据,同时仍然允许控制器输出原始JSON

我考虑的选项是从视图调用控制器(不好?)或创建额外的路由。

Route::get('sample',function()
{
$data=getdatafromwhere();
if(请求::ajax())
{
返回响应::json($data);
}
返回视图::make('some.View',compact('data))
});

我想分离API控制器,但如果您希望一个控制器处理所有响应格式,可以这样做:

网址:

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));
    }

}
控制器:

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));
    }

}

你是说你想在一个URL上有一个页面,可以是视图,也可以是输出原始JSON?哈哈。是的,这对我来说是一种透视。这就是额外的路线。谢谢。这要看情况而定……你可以使用一个路由,使用一个查询字符串
?json=true
等等。我认为这是一个基于意见的问题。我真的只想分离关注点。我的数据在一个URL,我的视图在另一个URL利用这些数据。如果视图和数据都是由Laravel生成的,那么似乎有比发出两个http请求更简单的方法。