【问题标题】:JMSSerializerBundle and FOSUser not workingJMSSerializerBundle 和 FOSUser 不工作
【发布时间】:2015-09-17 08:35:39
【问题描述】:

我只得到一个 JSON 结果,其中包含 FOSUser\User 中的所有内容 + 我的 CaseWorker 中的 ID 已暴露,但仅此而已!结果如下所示:

{
  "email": "tester@COM.de",
  "enabled": true,
  "id": 1
}

应该是这样的:

{
  "email": "tester@COM.de",
  "firstname": "Egon",
  "surname": "Olsen",
  "enabled": true,
  "id": 1
}

我做错了什么?

我阅读了 [1,2,3] 并拥有当前设置。

我的全局配置包含以下 JMS 和 FOS 条目:

#config.yml

...

fos_user:
    db_driver: orm
    firewall_name: default
    user_class: COMP\CalcBundle\Entity\CaseWorker

jms_serializer:
    metadata:
        auto_detection: true
        directories:
            FOSUserBundle:
                path: "@COMPCalcBundle/Resources/config/serializer/FOS"
                namespace_prefix: FOS\UserBundle

parameters:
    jms_serializer.serialized_name_annotation_strategy.class: JMS\Serializer\Naming\IdenticalPropertyNamingStrategy

隐藏 FOS\User 属性的 YML 如下所示:

# src\COMP\CalcBundle\Resources\config\serializer\FOS\Entity.User.yml

FOS\UserBundle\Model\User:
    exclusion_policy: ALL
    properties:
        email:
            expose: true
        enabled:
            expose: true

我的个案工作者实体如下所示:

# src\COMP\CalcBundle\Entity\CaseWorker.php

use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Model\User as BaseUser;
use JMS\Serializer\Annotation as JMS;

/**
 * CaseWorker
 *
 * @ORM\Table(name="caseWorker", options={"collate"="utf8_general_ci"})
 * @ORM\Entity
 * @JMS\ExclusionPolicy("all")
 */
class CaseWorker extends BaseUser
{
    /**
     * @var integer
     *
     * @ORM\Column(type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue
     * @JMS\Expose
     */
    protected $id;

    /**
     * @var string
     *
     * @ORM\Column(type="string", length=80, nullable=true)
     * @JMS\Expose
     */
    private $firstname;

    /**
     * @var string
     *
     * @ORM\Column(type="string", length=80, nullable=true)
     * @JMS\Expose
     */
    private $surname;

    /**
     * @ORM\OneToMany(targetEntity="Event", mappedBy="caseworker")
     **/
    private $events;

    ...

【问题讨论】:

    标签: symfony serialization doctrine-orm jmsserializerbundle


    【解决方案1】:

    找到了!

    问题是,序列化器只序列化不为空的字段! 所以在我的情况下,该实体没有设置名字和姓氏!

    我希望这对其他人有帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-20
      • 2015-03-20
      • 1970-01-01
      • 1970-01-01
      • 2015-12-09
      • 2023-03-25
      • 1970-01-01
      相关资源
      最近更新 更多