Je développe un service RESTful avec Symfony2, JMS Serializer Bundle, FOS Rest Bundle et Hateoas Bundle. Il y a 2 entités User et Company et je veux, quand je sérialise une compagnie obtenir plus de détails. Toutefois, lors de la sérialisation, la société associée à l'utilisateur affiche uniquement l'ID de la société et l'objet de nom ou uniquement l'ID en tant qu'entier.JMS Serializer sérialiser l'objet dans l'objet avec une vue différente
J'ai une politique de sérialisation comme ci-dessous.
utilisateur
Acme\UserBundle\Entity\User:
exclusion_policy: ALL
xml_root_name: user
properties:
id:
expose: true
type: integer
company:
expose: true
type: Acme\CompanyBundle\Entity\Company
name:
expose: true
type: string
surname:
expose: true
type: string
picture:
expose: true
type: string
relations:
-
rel: self
href:
route: acme_v1_get_user
parameters:
id: expr(object.getId())
absolute: true
Société
Acme\CompanyBundle\Entity\Company:
exclusion_policy: ALL
xml_root_name: company
properties:
id:
expose: true
type: integer
name:
expose: true
type: string
address:
expose: true
type: string
phone:
expose: true
type: string
web:
expose: true
type: string
created_date:
expose: true
type: DateTime
updated_date:
expose: true
type: DateTime
status:
expose: true
type: integer
relations:
-
rel: self
href:
route: acme_v1_get_company
parameters:
id: expr(object.getId())
absolute: true
de sortie prévue
{
"id": 1,
"name": "Jenny",
"surname": "Doe",
"picture": "http://google.com/kittens.jpg",
"info": [],
"company": {
"id": 1,
"name": "Demo Company"
}
}
OU
{
"id": 1,
"name": "Jenny",
"surname": "Doe",
"picture": "http://google.com/kittens.jpg",
"info": [],
"company": 1
}
Ce que je suis
{
"id": 1,
"name": "Jenny",
"surname": "Doe",
"picture": "http://google.com/kittens.jpg",
"info": [],
"company": {
"id": 1,
"name": "Demo Company",
"address": "Lorem ipsum dolor sit amet",
"phone": "0902124440444",
"web": "http://www.demo-company.com",
"created_date": "2015-07-22T11:21:03+0300",
"updated_date": "2015-07-24T01:50:39+0300",
"status": 1
}
}
Merci, groupant travail pour moi. Je fais un groupe par défaut qui est pour afficher chaque processus de sérialisation et un groupe lié à la sérialisation par exemple. Groupe d'utilisateurs pour la sérialisation du contrôleur d'utilisateur ou Groupe d'entreprise pour le contrôleur d'entreprise. De cette façon, lorsque je sérialise à partir du groupe d'entreprise activant l'entreprise afin d'obtenir tous les détails, mais à partir d'une autre sérialisation liée à l'entreprise ne montre que les groupes par défaut. Y a-t-il une meilleure façon de le faire ou est-ce une façon courante de le faire? –
Je ne fais que commencer par la sérialisation, donc je ne sais pas s'il y a une meilleure façon de faire, mais c'est comme ça que je le ferais – Hakim