php - 使用 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。
谢谢
解决方案
看看这个: https ://laravel.com/docs/6.x/responses#json-responses
你不需要创建 Blade View 和自定义构建 JSON,使用 Laravel 提供的。
return response()->json($data);
推荐阅读
- ruby-on-rails-6 - Webpacker 无法从 node_modules npm 包中找到图像
- django - 如果没有主键,如何在 Django 中建模数据库视图?
- excel-formula - 如果两个条件都匹配,则搜索关键字并返回值/空白
- google-chrome - 如何在移动模式显示(iphoneX)中启动/启动 chrome?
- .net - 从 SharePoint Online 下载某些用户的文件
- html - 填充屏幕上的可用空间,不下不下或溢出
- node.js - 如何修复部署错误'starter.cmd“D:\home\site\d ...”'被中止
- java - java.io.NotSerializableException 即使类实现了 Serializable
- laravel - 如何为这个普通的 SQL 查询编写 Laravel 雄辩的查询(内部查询)
- ios - 当应用程序处于前台时,iOS 推送通知 willPresent 通知委托方法未调用