Ограничения группы аннотаций Symfony - PullRequest
0 голосов
/ 30 января 2019

У меня есть такой объект DTO

   class SaveManagedOfferCreativesCommand
    {
        /**
         * @var int
         *
         * @Assert\NotNull()
         * @Assert\Type(type="int")
         */
        public $id;

        /**
         * @var EmbeddedCreative
         *
         * @Assert\Valid(groups={"defaultCreative"})
         */
        public $defaultCreative;

        /**
         * @var EmbeddedCreative[]
         *
         * @Assert\Valid(groups={"creativeTranslations"})
         */
        public $creatives = [];

        public function setCreative(EmbeddedCreative $offerOfferWallCreative): void
       {
            $this->defaultCreative = $offerOfferWallCreative;
       }

        public function addOCreative(EmbeddedCreative $offerOfferWallCreative): void
        {
            $this->creatives[] = $offerOfferWallCreative;
        }

    }

и класс EmbeddedCreative:

    class EmbeddedCreative
    {
        /**
         * @var string
         *
         * @Assert\NotNull(groups={"creativeTranslations", "defaultCreative"})
         * @Assert\Type(type="string", groups={"creativeTranslations", "defaultCreative"})
         */
        public $anchor;

        /**
         * @var string
         *
         * @Assert\NotNull(groups={"creativeTranslations"})
         * @Assert\IsNull(groups={"defaultCreative"})
         * @Assert\Type(type="string", groups={"creativeTranslations", "defaultCreative"})
         * @Assert\Length(max=2, groups={"creativeTranslations", "defaultCreative"})
         */
        public $language;
}

Ожидаемое поведение таково:

  • для $ defaultCreative$ language должен быть всегда нулевым, чтобы пройти валидацию
  • для $ creatives $ language не должен быть нулевым, чтобы пройти валидацию.

Зависит от этой статьи https://symfony.com/blog/new-in-symfony-3-4-groups-support-for-the-valid-constraint мы можемсделайте это с группами, начиная с symfony 3.4, но с группами (код, который я предоставил выше) symfony вообще не будет проверять встраиваемый класс и проходить валидацию с любыми данными, но когда я удаляю группы, он также не будет проверяться должным образом (он допускает нуль или не ноль $language зависит от того, какое ограничение установлено в встраиваемом классе).

Я считаю, что проверка с группами должна работать, и я делаю что-то не так.Может ли кто-нибудь мне помочь, предоставляя хороший способ сделать ожидаемую проверку?

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