首页 > 解决方案 > 使用 laravel 刀片生成 json

问题描述

我正在尝试使用 laravel 刀片模板生成 JSON

$articles 是一个集合,当我这样做时

控制器:

return view('eblogger::content.blog.json.home')->withArticles($articles[0]->toArray());

看法 :

{
    'data': [
        {
            'id': {{ $articles['id'] }},
            'name': "{{ $articles['name'] }}"
        }
    ]
}

我得到了 chrome devtools 这个对象:

在此处输入图像描述

没关系,它返回一个对象。

但是当我使用刀片功能时

控制器:

return view('eblogger::content.blog.json.home')->withArticles($articles->toArray());

查看(使用更具体的示例进行编辑)

{
    'data': [
        @foreach($articles['data'] as $article)
           @can('read_this_article', $article)
           {
            'id': {{ $article['id'] }},
            'name': "{{ $article['name'] }}",
            'localization' : "{{getLocalization($article['address'])}}"
           }
           @endcan
        @endforeach
    ]
}

它返回一个非对象,如字符串

在此处输入图像描述

有没有办法使用 laravel 刀片模板生成 Json ?

编辑

我知道有一个 json 助手可以从对象生成 Json。但我需要的是一种创建自定义 json 的方法。在发送响应之前,我需要检查授权和其他处理。

结论

我设法建立了一代。问题很简单。我忘了在对象后面加逗号。我很清楚这是对正确使用刀片的一种转移。

@mdexp 给我这个链接:https ://laravel.com/docs/6.x/eloquent-resources

确实,这是构建 API 的正确方法

在构建 API 时,您可能需要一个位于 Eloquent 模型和实际返回给应用程序用户的 JSON 响应之间的转换层。Laravel 的资源类允许你将你的模型和模型集合转换成 JSON。

谢谢

标签: phplaravel

解决方案


看看这个: https ://laravel.com/docs/6.x/responses#json-responses

你不需要创建 Blade View 和自定义构建 JSON,使用 Laravel 提供的。

return response()->json($data);

推荐阅读