Мое приложение позволяет публиковать рекламу на сайте. У меня есть много объектов с похожими полями. Например, рассмотрим такой подход:
У меня есть 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