Realizzo un'app RESTful con Symfony e FOSRestBundle. FOSRestBundle utilizza JMS Seriazlizer per serializzare i dati in formato json. Ho tutto ciò che funziona con un piccolo problema.Il serializzatore JMS non espone una proprietà
Questa è la mia classe di entità
/**
* Post
*
* @ORM\Table()
* @ORM\Entity(repositoryClass="Tomalo\AdminBundle\Entity\PostRepository")
* @ExclusionPolicy("none")
*/
class Post
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var string
*
* @ORM\Column(name="content", type="text")
* @Assert\NotBlank()
*/
private $content;
/**
* @var float
*
* @ORM\Column(name="lat", type="float")
* @Assert\NotBlank()
*/
private $lat;
/**
* @var float
*
* @ORM\Column(name="lon", type="float")
* @Assert\NotBlank()
*/
private $lon;
/**
* @var \DateTime
*
* @ORM\Column(name="date", type="datetime")
*/
private $date;
/**
* @var string
*
* @ORM\Column(name="sign", type="string", length=50, nullable=true)
* @Expose
*/
private $sign;
/**
* @var integer
*
* @ORM\Column(name="status", type="integer")
*/
private $status=0;
/**
* @var integer
*
* @ORM\Column(name="points", type="integer")
*/
private $points=0;
/**
* @var string
*
* @ORM\Column(name="uuid", type="string", length=43)
* @Assert\NotBlank()
* @Exclude
*/
private $uuid;
private $owner;
//get/set method continue
e questo è JSON ottengo:
{
"id": 5,
"content": "zxcvzxcvzxc",
"lat": 37.422005,
"lon": -122.084095,
"date": "2013-05-20T05:06:57+0100",
"status": 0,
"points": 0,
"owner": 0
}
Nella mia entità $ UUID è l'unica proprietà haveing annotazioni @Exclude e non c'è come previsto, ma manca anche la proprietà $ sign. Come vedi, ho inserito l'annotazione @Expose in $ sign, ma non ho cambiato nulla. Ho provato ad utilizzare @ExclusionPolicy ("tutto") ed esporre tutti tranne per uuid ma sto ottenendo
Warning: json_encode(): recursion detected in E:\workspace\htdocs\tomalo\vendor\jms\serializer\src\JMS\Serializer\JsonSerializationVisitor.php line 29
ho trovato alcune informazioni come lo è un po 'php bug
alcuna idea di ciò che è sbagliato e come rimediare vero?
vi consiglio di configurazione delle serializzazione e la dottrina mapping in file separati (xml/YML) invece di utilizzare le annotazioni perché consente un'estensione più facile e l'ereditarietà in bundle ma è una questione di preferenze personali ... solo i miei pochi centesimi – nifr
Grazie, prenderò in considerazione. È davvero bello Symfony offre pochi formati per scrivere la configurazione e cose ma è un'arma a doppio taglio. – Gustek