Всем привет! Делаю форму по редактированию товара. Админка easyAdmin 4

и symfony 6. Собрать форму по свойствам сущности товара + связи его с категорией не проблема. Столкнулся с тем что стандартные типы форм не подходят для реализации свойств товара, нужно сгенерировать строки (property_name, property_value, property_unit) и также добавлять пустые строки формы.

У product есть связь с property_value (OneToMany), а у property_value связь с property (ManyToOne).

Создал тип формы PropertyValue и реализовал метод buildForm:

public function buildForm(FormBuilderInterface,$builder, array $options): void
{
$options = [
'property' => [
'label' => 'Название',
'disabled' => true,
],
'property-value' => [
'label' => 'Значение',
'disabled' => 'true'
],
'property-unit' => [
'label' => 'Еденица измерения',
'disabled' => true
]
];

$builder
->add('property', TextType::class, $options['property'])
->add('property-value', TextType::class, $options['property-value'])
->add('property-unit', TextType::class, $options['property-unit'])
->add('property-btn-add', ButtonType::class, [
'label' => 'Добавить свойство'
]);

На выхлопе формы получил 3 инпута (только 1 строку) и кнопку, добавил листенер на FormEvents::POST_SET_DATA для установки имеющихся данных из связей по product

$builder->addEventListener(FormEvents::POST_SET_DATA, function (FormEvent $event) use ($options) {
$form = $event->getForm();
$data = $event->getData();

foreach ($data as $datum) {
$options['property']['data'] = $datum->getProperty()->getName();
$options['property-value']['data'] = $datum->getValue();
$options['property-unit']['data'] = $datum->getProperty()->getUnit();

$form->add('property', TextType::class, $options['property']);
$form->add('property-value', TextType::class, $options['property-value']);
$form->add('property-unit', TextType::class, $options['property-unit']);
}
});

Вот тут и возникают у меня проблемы:
1. Когда прилетает объект Property в тип формы то он представляет коллекцию и я не совсем понимаю как не перетирать данные в одной полученной строке, а сгенерировать ровно столько строк сколько элементов в коллекции?
2. Так же не понимаю как подключаются шаблоны для типов форм, в доке симфони мол просто создайте шаблон и пишите, а где указывается какой шаблон должен юзаться для типа формы?

2 ответов

14 просмотров

1 у тебя должны быть две формы, в первой будет CollectionType с параметром entry_type на класс второй формы 2 в атрибуте data-prototype передают инклуд include(path_to_tmpl)|e('html_attr')

rmshell-🧬 Автор вопроса
Michel Angelo
1 у тебя должны быть две формы, в первой будет C...

Тэк, примерно понял, позже попробую, спс

Похожие вопросы

Обсуждают сегодня

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта