0

I only get a JSON result with everything from FOSUser\User + the ID from my CaseWorker exposed but nothing more! The result looks like the following:

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

It should look like this:

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

What do I do wrong?

I read [1,2,3] and have the current setup.

My global configuration has the following entries for JMS and 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

The YML to hide the FOS\User properties looks like this:

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

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

My caseworker entity look like this:

# 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;

    ...
Community
  • 1
  • 1
lony
  • 6,733
  • 11
  • 60
  • 92

1 Answers1

0

Found it!

The problem is, the serializer only serializes fields which are not null! So in my case the entity had no firstname and surname set!

I hope this helps someone else!

lony
  • 6,733
  • 11
  • 60
  • 92