Symfony 7 — правильный способ повторного использования частей общих форм со многими сущностямиPhp

Кемеровские программисты php общаются здесь
Ответить Пред. темаСлед. тема
Anonymous
 Symfony 7 — правильный способ повторного использования частей общих форм со многими сущностями

Сообщение Anonymous »

Мне нужна помощь, чтобы проверить правильность моих мыслей.
Мое приложение позволяет публиковать рекламу на сайте. У меня есть много объектов с похожими полями. Например, рассмотрим такой подход:
У меня есть 3 объекта:
  • Клиент (содержит: идентификатор, имя, описание)
  • Реклама (содержит: идентификатор, имя, описание, адрес1, адрес2, город)
  • Адрес доставки: (содержит: идентификатор, адрес1, адрес2, город )
У меня есть два признака (чтобы избежать многократного объявления одних и тех же свойств объекта):
BaseTrait: имя, описание
AddressTrait : адрес1, адрес2, город
И у меня есть 2 настраиваемых поля формы:
  • адрес (содержит: адрес1, адрес2 , город)
  • baseInfo (содержит: имя, описание)
Моя цель — использовать поля адреса и baseInfo, чтобы объединить их в одном поле и прикрепить ограничения от сущности к полям, включенным в эти настраиваемые поля, например:

Код: Выделить всё

class Advertisement {
// My entity
#[Assert\NotBlank]
private string $name;

#[Assert\NotBlank]
private string $description;

#[Assert\NotBlank]
private string $address1;

#[Assert\NotBlank]
private string $address2;

#[Assert\NotBlank]
private string $city;

Код: Выделить всё

//Form
$builder->add('baseInfo', BaseType::class, [ // Map properties from this field to Advertisement properties: name, description
$builder->add('address', AddressType::class, [ // Map properties from this field to Customer properties: address1, address2, city
Поэтому после отправки формы у меня должны появиться ошибки для полей имени, описания, адреса1, адреса2, города, когда они будут пустыми (потому что Entity определяет ограничения NotBlank).
Я хотел бы сделать то же самое (повторно использовать некоторые из моих настраиваемых полей) с другими объектами, например:

Код: Выделить всё

class Customer {
// My entity
#[Assert\NotBlank]
private string $name;

#[Assert\NotBlank]
private string $description;

#[Assert\NotBlank]
private string $anotherProperty;

Код: Выделить всё

//Form
$builder->add('baseInfo', BaseType::class, [ // Map properties from this field to Customer properties: name, description
$builder->add('anotherProperty', TextType::class
Аналогично, имя поля, описание должны иметь ограничения от Entity
Я пробовал много вещей из документации ChatGPT или Symfony, но безуспешно . Когда я пытаюсь добавить настраиваемое поле, я не могу установить отображение=>true, поскольку адрес свойства/baseInfo не существует внутри объекта (это логично). Когда я указываю Mapping=>false, проверка пропускается.
Я пытался объединить группы проверки, но тоже не повезло. Кажется, в документации Symfony ничего не сказано о том, как вкладывать поля Entity в настраиваемый тип формы с настраиваемыми полями (с ограничениями).
Я не делился здесь своим кодом, потому что я интересно, правильно ли я думаю. Возможно, я мог бы решить эту проблему с помощью родительского абстрактного класса или создать полную форму на основе какого-то интерфейса и т. д. Но это означает, что для (например, 50 сущностей) мне придется создать 50 похожих или уникальных форм, что для меня является излишним усилием.
В общем, будем благодарны за идеи, как правильно решить эту проблему
и не повторять слишком много кода.
Буду благодарен за все ваши подсказки.

Подробнее здесь: https://stackoverflow.com/questions/791 ... y-entities
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Php»