Платформа Api: группы сериализации делают свойства исчезающими - PullRequest
0 голосов
/ 06 ноября 2019

Я написал API с платформой Api, я сделал для сущностей:

  • Флажок: normalizationContext={"groups"={"CHECKBOX_READ"}, "enable_max_depth"=true}
  • CheckboxGroup: normalizationContext={"groups"={"CHECKBOX_GROUP_READ"}, "enable_max_depth"=true}
  • Документ: normalizationContext={"groups"={"DOCUMENT_READ"}, "enable_max_depth"=true}
  • Пользователь: normalizationContext={"groups"={"USER_READ"}, "enable_max_depth"=true}

Проблема связана с объектом-флажком. Я получаю частичный результат (отсутствует свойство сущности, даже если я добавляю аннотацию @Groups({"CHECKBOX_READ").

Если я удаляю normalizationContext из верхней части класса сущности Checkbox, я получаю все свойства.

Я уже пытался переименовать класс, очистить кеш и переименовать группу normalizationContext без успеха.

Вот мой класс Entbox Entity (без функции geth и setter):

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

Когда я пытаюсь использовать HTTP-запрос GET для /checkbox/1, я получаю только следующий результат:

{
      "@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"
      }
}

Вы видите, что отсутствуют некоторые свойства, но я не понимаю причину. был бы очень признателен за любую помощь.

Не отображается сообщение об ошибке и ничего не тревожит в разделе /_profiler

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...