Мое приложение позволяет публиковать рекламу на сайте. У меня есть много объектов с похожими полями. Например, рассмотрим такой подход:
У меня есть 3 объекта:
- Клиент (содержит: идентификатор, имя, описание)
- Реклама (содержит: идентификатор, имя, описание, адрес1, адрес2, город)
- Адрес доставки: (содержит: идентификатор, адрес1, адрес2, город )
BaseTrait: имя, описание
AddressTrait : адрес1, адрес2, город
И у меня есть 2 настраиваемых поля формы:
- адрес (содержит: адрес1, адрес2 , город)
- 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
Я хотел бы сделать то же самое (повторно использовать некоторые из моих настраиваемых полей) с другими объектами, например:
Код: Выделить всё
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
Я пробовал много вещей из документации ChatGPT или Symfony, но безуспешно . Когда я пытаюсь добавить настраиваемое поле, я не могу установить отображение=>true, поскольку адрес свойства/baseInfo не существует внутри объекта (это логично). Когда я указываю Mapping=>false, проверка пропускается.
Я пытался объединить группы проверки, но тоже не повезло. Кажется, в документации Symfony ничего не сказано о том, как вкладывать поля Entity в настраиваемый тип формы с настраиваемыми полями (с ограничениями).
Я не делился здесь своим кодом, потому что я интересно, правильно ли я думаю. Возможно, я мог бы решить эту проблему с помощью родительского абстрактного класса или создать полную форму на основе какого-то интерфейса и т. д. Но это означает, что для (например, 50 сущностей) мне придется создать 50 похожих или уникальных форм, что для меня является ненужным усилием.
Итак, как мне решить эту проблему, чтобы не повторять слишком много кода?
Подробнее здесь: https://stackoverflow.com/questions/791 ... y-entities