Quantcast
Channel: Active questions tagged symfony4 - Stack Overflow
Viewing all articles
Browse latest Browse all 3925

Api Platform : Serialization groups make properties disapear

$
0
0

I wrote an API with Api Platform, I made for entities :

  • Checkbox : normalizationContext={"groups"={"CHECKBOX_READ"}, "enable_max_depth"=true}
  • CheckboxGroup : normalizationContext={"groups"={"CHECKBOX_GROUP_READ"}, "enable_max_depth"=true}
  • Document : normalizationContext={"groups"={"DOCUMENT_READ"}, "enable_max_depth"=true}
  • User: normalizationContext={"groups"={"USER_READ"}, "enable_max_depth"=true}

The problem come from the checkbox entity. I get a partial result (missing entity property, even if I add the @Groups({"CHECKBOX_READ") annotation.

If I remove the normalizationContextfrom the top of the Checkbox entity class, I get all the properties.

I have already tried to rename the class, to clear the cache and to rename the normalizationContext group withouth success.

Here is my Checkbox Entity class (withouth getter and setter function) :

<?php

/**
 * @ApiResource(normalizationContext={"groups"={"CHECKBOX_READ"}, "enable_max_depth"=true})
 * @ORM\Entity(repositoryClass="App\Repository\CheckboxRepository")
 * @ApiFilter(SearchFilter::class, properties={
 *     "id":"exact",
 *     "case_a_cocher":"partial",
 *     "conditions_supplementaires":"exact",
 *     "document.id":"exact",
 *     "document.name":"exact",
 * })
 * @ApiFilter(BooleanFilter::class, properties={
 *     "mode_suppression",
 * })
 * @ApiFilter(OrderFilter::class, properties={
 *     "id",
 *     "case_a_cocher",
 *     "document.id",
 *     "document.name",
 *     "document.name",
 *     "mode_suppression",
 *     "site_neuf",
 *     "ream_ultra1",
 *     "ream_ultra2",
 *     "ream_accueil_cohab",
 *     "accueil_cohab",
 *     "moyen_mobile",
 *     "demontage",
 *     "osm",
 *     "lpwa",
 *     "swap",
 *     "ream_hr",
 *     "mest",
 * })
 */
class Checkbox
{
    /**
     * @var int
     * @ORM\Id()
     * @ORM\GeneratedValue()
     * @ORM\Column(type="integer")
     * @Groups({"CHECKBOX_READ"})
     */
    private $id;

    /**
     * @var string Nom de la case à cocher
     * @ORM\Column(type="string", length=511)
     * @Constraints\NotBlank(message="Le nom de la case à cocher est requis et ne peut être vide")
     * @Constraints\Length(min = 2, max = 511)
     * @Groups({"CHECKBOX_READ"})
     */
    private $case_a_cocher;

    /**
     * @var string[]
     * @ORM\Column(type="string", length=511, nullable=true)
     * @Constraints\Length(
     *     min = 2,
     *     max = 511,
     *     minMessage="La condition supplémentaire est trop courte. Elle ne peut avoir que {{ limit }} caractère ou plus.",
     *     maxMessage="La condition supplémentaire est trop longue. Elle ne peut avoir que {{ limit }} caractère ou moins."
     * )
     * @Groups({"CHECKBOX_READ"})
     */
    private $conditions_supplementaires;

    /**
     * @var integer
     * @ORM\Column(type="boolean")
     * @Groups({"CHECKBOX_READ"})
     */
    private $mode_suppression;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur du site neuf est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="Le site neuf ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="Le site neuf ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $site_neuf = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur du Réam Ultra1 est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="Le Réam Ultra1 ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="Le Réam Ultra1 ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $ream_ultra1 = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur du Réam Ultra2 est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="Le Réam Ultra2 ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="Le Réam Ultra2 ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $ream_ultra2 = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur du Réam + Accueil Cohab est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="Le Réam + Accueil Cohab ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="Le Réam + Accueil Cohab ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $ream_accueil_cohab = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur de Accueil Cohab est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="L'Accueil Cohab ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="L'Accueil Cohab ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $accueil_cohab = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur de Moyen Mobile est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="Le Moyen Mobile ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="Le Moyen Mobile ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $moyen_mobile = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur de démontage est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="Le démontage ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="Le démontage ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $demontage = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur de OSM est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="L'OSM ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="L'OSM ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $osm = 0;


    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur de LPWA est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="LPWA ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="LPWA ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $lpwa = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur de SWAP est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="SWAP ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="SWAP ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $swap = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur de Réam HR est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="Le Réam HR ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="Le Réam HR ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $ream_hr = 0;

    /**
     * @var integer
     * @ORM\Column(type="integer")
     * @Constraints\NotBlank(message="La valeur de MEST est requise et ne peut être vide")
     * @Constraints\LessThanOrEqual(value="2", message="Le MEST ne peut pas avoir une valeur plus grande que 2")
     * @Constraints\GreaterThanOrEqual(value="0", message="Le MEST ne peut pas avoir une valeur négative")
     * @Groups({"CHECKBOX_READ"})
     */
    private $mest = 0;

    /**
     * @var Document
     * @ORM\ManyToOne(targetEntity="App\Entity\Document", inversedBy="checkboxes")
     * @ORM\JoinColumn(nullable=false)
     * @ApiSubresource()
     * @Groups({"CHECKBOX_READ"})
     */
    private $document;

    /**
     * @var CheckboxGroup
     * @ORM\ManyToOne(targetEntity="App\Entity\CheckboxGroup", inversedBy="checkboxes")
     * @ORM\JoinColumn(nullable=false)
     * @ApiSubresource()
     * @Groups({"CHECKBOX_READ"})
     */
    private $checkbox_group;

When I try to use a HTTP GET request on /checkbox/1 I only get the following result :

{
      "@context": "string",
      "@id": "string",
      "@type": "string",
      "id": 0,
      "demontage": 0,
      "osm": 0,
      "lpwa": 0,
      "swap": 0,
      "mest": 0,
      "document": {
        "@context": "string",
        "@id": "string",
        "@type": "string"
      }
}

You can see there are a few properties missing but I don't understand the reason. I would really appreciate any help.

No error message are displaying and nothing alarming appears in the /_profiler section


Viewing all articles
Browse latest Browse all 3925

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>