Ich versuche gerade, ein ziemlich komplexes Objekt zu serialisieren, um es als Antwort in JSON mit dem Symfony Serializer zurückzugeben. Ich habe folgendes Objekt:Symfony ObjectNormalizer leere Eigenschaft Pfad
/**
* @Doctrine\Entity
* @Doctrine\Table(name="Fichiers")
*/
class Fichier{
/**
* @Doctrine\Column(name="id", type="integer")
* @Doctrine\Id
* @Doctrine\GeneratedValue(strategy="AUTO")
*/
protected $id;
/**
* @Doctrine\OneToOne(targetEntity="Utilisateur")
* @Doctrine\JoinColumn(name="idProprietaire", referencedColumnName="id", nullable=true)
*/
protected $proprietaire;
/**
* @Doctrine\OneToOne(targetEntity="Fichier")
* @Doctrine\JoinColumn(name="idParent", referencedColumnName="id")
*/
protected $parent;
/**
* @Doctrine\Column(name="estDossier", type="boolean")
* @Assert\NotBlank()
*/
protected $estDossier;
/**
* @Doctrine\Column(name="nom", type="string", length=250)
* @Assert\NotBlank()
*/
protected $nom;
/**
* @Doctrine\ManyToMany(targetEntity="Groupe")
* @Doctrine\JoinTable(name="Fichiers_Groupes",
* joinColumns={@Doctrine\JoinColumn(name="idFichier", referencedColumnName="id")},
* inverseJoinColumns={@Doctrine\JoinColumn(name="idGroupe", referencedColumnName="id")}
*)
*/
protected $groupes;
/**
* @Doctrine\Column(name="extension", type="string", length=10)
*/
protected $extension;
/**
* @Doctrine\Column(name="dateCreation", type="datetime")
*/
protected $dateCreation;
/**
* @Doctrine\Column(name="dateModification", type="datetime")
*/
protected $dateModification;
/**
* @Doctrine\Column(name="taille", type="integer")
*/
protected $taille;
Und hier ist mein Controller-Code:
$fichier = $this->getDoctrine()->getRepository(Fichier::class)->find($idFichier);
$encoder = new JsonEncoder();
$normalizer = new ObjectNormalizer();
$normalizer->setCircularReferenceHandler(function ($object) {
return $object->getId();
});
$serializer = new Serializer(array($normalizer), array($encoder));
$jsonContent = $serializer->serialize($fichier, 'json');
ich die folgende Fehlermeldung erhalten:
The property path should not be empty.
Nach einigen Tests habe ich herausgefunden, dass, wenn ich manuell Setzen Sie die Null-Eigenschaften meines Objekts, ich würde diesen Fehler nicht bekommen, aber einen anderen, wo es bei der Konvertierung in String nicht gelingt. Nachdem Sie diese Funktion:
public function __toString()
{
return strval($this->getId());
}
ich diesen Fehler, wenn man bedenkt id = 4:
Notice: Undefined variable: 4
Gibt es eine Möglichkeit, so dass die Normalisierungseinrichtung die Null Eigenschaften behandelt und/oder um diesen Fehler zu beheben?