Symfony 3: Как проверить массив объектов? - PullRequest
0 голосов
/ 20 марта 2019

У меня есть следующая сущность:

class Jobs {
//...

  /**
   * Tasks of Jobs
   * @var $tasks array
   */
   protected $tasks;

}

tasks хранится в виде массива в файле Json, например:

[
  {
    "designation": "Task 1",
    "action": "Do action 1",
    //...
  },
  {
    "designation": "Task 2",
    "action": "Do action 2",
    //...
  },
  //...
]

Когда пользователь определяет данные из формы, я хотел бы реализовать утверждение для проверки.

Я реализовал это (я использую yml):

...\Entity\Jobs:
  properties:
    tasks:
      - Collection:
        allowMissingFields: false
        missingFieldsMessage: jobs.tasks.missingfields
        fields:
          designation:
            - NotBlank:
              message: jobs.tasks.fields.blank
            ##...

Когда я пытаюсь проверить форму, у меня появляется ошибка проверки для data.tasks[designation] и data.tasks[action].

Проверка должна применяться на втором уровне массива.
Как я могу настроить валидатор для этого вида массива?

1 Ответ

1 голос
/ 20 марта 2019

Утверждение @Collection() используется, когда ключ массива является релевантным, как и в случае с каждым массивом, представляющим задачу. Если вы просто заботитесь о значениях, например, в числовой массив, вы можете использовать @All() -ограничение.

В вашем случае вы хотите объединить список задач (@All) и каждую задачу (@Collection) внутри этого списка. В качестве аннотации это может выглядеть примерно так:

class Jobs
{
    /**
     * @Assert\All({
     *      @Collection(...)
     * })
     */
    private $tasks;
}

См .: https://symfony.com/doc/current/reference/constraints/All.html

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