Symfony - Как правильно использовать опцию «error_mapping» для массивов свойств? - PullRequest
0 голосов
/ 03 июля 2019

Контекст

Я использую Sylius 1.4.4 с Symfony 4.2.8.

И вот суть кода, о котором я расскажу: https://gist.github.com/migmolrod/1dbad05afc58974f7b938ab67a36b132

  1. Основным субъектом является Бизнес .Затем у меня есть ContactAwareTrait с полями «телефон», «мобильный», «электронная почта» и «факс», чтобы я мог легко использовать его в нескольких объектах.Бизнес-сущность использует эту черту (как и другие в моем коде, но для простоты я добавлю в сущность только материалы, связанные с бизнесом).
  2. Тип формы BusinessType тогдаиспользует ContactType тип формы (опять же, поэтому я могу использовать его в других типах форм, у сущностей которых был ContactAwareTrait).
  3. Затем у меня есть проверочный файл yaml где я указываю ограничения.Здесь я жестко закодировал конфигурацию проверки полей контакта в конфигурации проверки бизнеса.Есть ли способ абстрагировать это к какому-то файлу «Проверка контакта», который затем может быть повторно использован при проверке сущности?Потому что сейчас я повторяю код / ​​конфиг.
  4. Я также положил туда шаблоны , потому что ... ну, на данный момент я просто в отчаянии и не знаю, еслиЯ сделал что-то не так в самом неожиданном месте, поэтому ...

Проблема

, если я поставлю недопустимое значение для любого из этих свойств / полей (телефон, мобильный телефон, электронная почта и / или факс), сообщение об ошибке отображается в верхней части формы , не прикрепленное к соответствующему полю.

То, что я пробовал

Я искал решение здесь, в SO, но все, что я нашел, предназначено для использования с дочерними объектами.В моем случае Контактная информация - это не сама сущность, а, так сказать, массив свойств в форме.

Так что я могу использовать ' error_mapping ', чтобы сообщить валидатору «эй, эта ошибка принадлежит этому полю» в данном конкретном случае использования?Если так, то как?Я пробовал несколько перестановок 'error_mapping' => ['several permutations here' => 'the same amount or more permutations here'] и в нескольких местах (вызов ContactType внутри BusinessType, в buildTorm ContactType, в полях ContactType ...), даже очищая кеш между изменениями, чтобы убедиться, что все было на месте.Но не повезло.

Что я могу сделать?Лучше абстрагироваться Контакт с моделью (даже не сопоставленной с доктриной как сущностью / таблицей) и рефакторинг кода вокруг этого?

Любая помощь будет принята с благодарностью.Я бы предпочел узнать и понять, как использовать опцию error_mapping, даже если просто из любопытства на данный момент.

...