问题标签 [jmsserializerbundle]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
2540 浏览

symfony - FOSRestBundle / JMSSerializerBundle:与 Symfony2 安全角色交互

我想用 JMSSerializerBundle 和 FOSRestBundle 序列化并只返回我的实体的几个属性。

例如我有这个属性:

用户

  • 用户名
  • 电子邮件
  • 生日
  • 注释

注释

  • 文本
  • 约会时间

具有角色 ROLE_ADMIN 的用户应该获得整个用户对象的序列化对象。ROLE_USER 应该只获取用户名和所有评论。

在 JMSSerializerBundle 中实现 Symfony2 安全组件的最简单方法是什么?还是我需要在我的控制器中实现它并“手动”序列化它?

非常感谢

0 投票
1 回答
3068 浏览

symfony - Symfony 和 JMSSerializerBundle

我在使用 JMSSerializerBundle 时遇到了两个问题(但我是 php 编程的菜鸟,当然还有 symfony ..)。

所以.. 让我们从第一个更紧急的开始:序列化/反序列化日期。

我的服务接受格式为“yyyy-mm-dd”的日期参数(格式为“通用”。我的意思是 4 位数的年份、2 位数的月份和 2 位数的日期)。

我必须反序列化和序列化它。所以..因为我认为注释可能更容易我添加了* @SerializerAnnotation\Type("DateTime<'Y-m-d'")注释......它不起作用,文档说我应该使用双引号来指定格式,但如果我这样做,就会发生解析异常。

有什么建议吗?我也可以尝试 .yml 配置,但我不知道把它放在哪里..

第二:当我创建一个Person对象(PO​​ST 操作)时,我也有一个密码字段。所以我想反序列化它。当然我不想反序列化它。有没有办法指定一个排除策略用于序列化和另一个用于反序列化?

编辑:目前我删除了捆绑包并手动从数组映射到我的对象(反之亦然)。

0 投票
2 回答
7884 浏览

symfony - 您请求了一个不存在的服务“jms_serializer”

我正在尝试使用JMSSerializerBundle但运行后未列出该服务app/console container:debug | grep jms_serializer

安装后

并配置

如果你在某个地方使用

我得到错误You have requested a non-existent service "jms_serializer".

我该如何解决?

0 投票
6 回答
27311 浏览

serialization - 使用 JMS 序列化程序包添加额外字段

我有一个实体,我通常使用 JMS Serializer 包进行序列化。我必须在序列化中添加一些不存在于实体本身但通过一些数据库查询收集的字段。

我的想法是创建一个自定义对象,用实体字段填充字段并添加自定义对象。但是对于类的每个变体(我使用很多序列化组),这似乎有点棘手和昂贵。

有没有更好/标准的方法来做到这一点?使用工厂?前/后序列化事件?

也许我可以监听序列化并检查实体类型和序列化组添加自定义字段?但是,与其对每个实体进行查询,不如收集相关实体的所有数据,然后将其添加到它们中。任何帮助表示赞赏

0 投票
1 回答
266 浏览

symfony - yaml 中的 FSCHateoasBundle 配置

我正在尝试使用 FSCHateoasBundle 将链接添加到我的 API 输出。

文档提到了使用注释或 yaml 配置关系的可能性,但我无法弄清楚 yaml 配置的放置位置以及它的结构。作为记录的注释工作正常。有人举个例子吗?

我尝试做的是在 JMSSerializer 使用的配置文件中添加一个“关系”部分。我必须为 FSCHateoasBundle 使用单独的配置文件吗?

0 投票
1 回答
1965 浏览

json - Doctrine2、PersistentCollection 和 JMS 序列化器

我有一个具有 oneToMany 关系的实体,我可以使用获取关联的项目;

这将返回Doctrine\ORM\PersistentCollection对象,然后我将其传递给JMS Serializer,如下所示;

但是$json使用var_dump()结果输出;

字符串(2)“[]”

这是错误的。那里有数据,因为如果我做完了foreach()$this->getQueuedItems()我就会得到数据。

如何使用 JMS Serializer 将Doctrine\ORM\PersistentCollection序列化为 JSON?

谢谢

0 投票
3 回答
2999 浏览

php - 为什么在 Symfony2 中找不到我的 SerializerBuilder?

我正在尝试使用JMSSerializerBuilderjson 对我的对象进行编码,以便能够进行 AJAX 调用。

我已经通过composer成功安装了这个包。

然后,按照官方文档,我正在做:

但它返回

致命错误异常:

错误:在 C:\Program Files (x86)\wamp\www\Pondip Dev\src\Pondip\GeolocBundle\Controller\DefaultController.php 第 51 行中找不到类 'Pondip\GeolocBundle\Controller\JMS\Serializer\SerializerBuilder'

第 51 行是:

为什么会这样?删除该use JMS\Serializer\SerializerBuilder;行时(因为文档中未指定),我只收到内部服务器错误。

0 投票
2 回答
3311 浏览

php - JMSSerializer + 表单/数组

我是 SF2 社区的新手,所以请放轻松;)

我遇到了 JMSSerializerBundle 和表单/数组的问题。我花了两天时间试图自己弄清楚,但没有任何成功,我决定将其发布到小组。

我正在构建一个简单的测试应用程序,它可以让我了解这些东西是如何工作的。现在是 API 的时候了。我正在使用 FOSRestBundle,效果很好。我的整个“应用程序”运行良好(开发非常快速和有效),我已经学会了如何使用安全组件、防火墙、路由、Doctrine(尽管我过去曾使用过它),编写自定义身份验证提供程序 - 我'我停留在 API,事实上,它的一部分。

表单问题:我在我的 APIBundle 中创建了简单的 ArticleController(请忽略文本响应,我刚刚在调试时删除了我的代码以使其更具可读性):

如您所见,我还有一个 ArticleType 表单类:

问题是什么?在以 XML 或 JSON 格式发送请求时 - 当表单数据未经过验证时 - 我收到错误(由 JMSSerializer 格式化):

JSON 示例:

XML 示例:

我的第一个问题是:是否有任何自动化方法来更改序列化表单错误的输出?

我也有一个问题,与第一个有关,我想。返回单个对象时,我返回了以下 XML 结构:

返回数组(多篇文章)时,输出为:

第二个问题:如何更改响应 XML/JSON 结构?

0 投票
1 回答
579 浏览

symfony - Symfony 2.2:更改序列化表单字段名称

我正在使用 jms 序列化程序包来序列化我们工作 api 中的表单错误。从用户注册 api 我们有一个这样构建的表单:

并提交我们得到的错误信息:

由于实体字段是plainPassword,是否可以将其命名为密码并分配给plainPassword 字段?

0 投票
1 回答
2266 浏览

json - symfony 2 仅在新的反序列化后持久化对象

一直在用这个挠头。我有一个 symfony 2 json api,它为一个 android 应用程序提供数据。

api 序列化数据并使用 JMSSerializerBundle 将其发送到应用程序,完全没有问题。然后我使用 GSON 反序列化为本机 java 对象。

然后我的应用程序进行更改并将数据发布回 api。

我的问题是,当我反序列化从应用程序发送的 json 并尝试对其进行持久化/合并时,会在数据库中为已经存在的实体创建新对象。symfony 2 可以判断一个对象是否是新的吗?我会认为如果它有一个带有记录的 ID,它就会知道它是要更新而不是创建的。

这是我的控制器代码:

在此先感谢史蒂夫