У меня есть 3 связанные таблицы базы данных ( инвентарь, продажа, продажа_детали ), я хотел бы иметь возможность создать форму, которая может обрабатывать создание продажи.
Проблема связана с моим настраиваемым полем " InventoryType ", которое должно правильно отображаться на объект в базе данных.
ПРИМЕЧАНИЕ : Запасы хранятся однозначно по их серийному номеру.
Я создал 3 пользовательских типа полей: " InventoryType, SaleDetailsType, SaleType ",
The InventoryType содержит данные, равные таблице инвентаризации и (Inventory.php Entity)
. SaleDetailsType содержит один InventoryType ,
И SaleType содержит коллекцию SaleDetailsTypes , информацию об учетной записи и т. Д.
Я пытался с файлом InventoryToSerialNumberTransformer преобразовать серийный номер винвентарь, чтобы поле InventoryType содержало только серийный номер.
// src/Form/Type/InventoryType.php
$builder->add('serialNumber', TextType::class, ['label' => 'Serialnumber'])
// src/Form/Type/SaleDetailsType.php
$builder->add('Inventory', InventoryType::class, ['label' => 'Inventory item']);
// src/Form/Type/SaleType.php
$builder->add('account', EntityType::class, [ 'class' => Account::class ])
->add('shop', EntityType::class, [ 'shop' => Shop::class ])
->add('saledetails', CollectionType::class, [ 'entry_type' => SaleDetailsType::class,
'entry_options' => ['label' => false],
'allow_add' => true ])
->add('save', SubmitType::class, ['label' => 'Create Sale!']);
{{ form_start(form) }}
{{ form_row(form.account) }}
{{ form_row(form.shop) }}
<h3>Saledetails</h3>
<ul class="saledetails">
{% for detail in form.saledetails %}
{% for inventory in detail %}
<li> {{ form_row(inventory.serialNumber) }}</li>
{% endfor %}
{% endfor %}
</ul>
{{ form_row(form.save) }}
{{ form_row(form._token) }}
Ожидаемое поведение:
При добавлении элементов спискачерез клиентский JavaScript, который идентиченВажно, что Symfony использует (это уже сделано и работает отлично), «инвентарь» должен быть правильно вставлен только из серийного номера.