如何在Symfony中使用自定义类型正确使用FormBuilderInterface

时间:2019-05-16 10:27:38

标签: php symfony

我有3个相关的数据库表(库存,销售,sale_details ),我希望能够制作一个可以处理创建销售的表格。

问题出在我的自定义字段“ InventoryType ”上,该字段应正确映射到数据库中的实体。

注意库存唯一地存储在其序列号上。

我创建了3种自定义字段类型,分别是“ InventoryType,SaleDetailsType,SaleType ”,

InventoryType 保存的数据等于库存表和(Inventory.php实体)

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使用的格式相同的列表项时(已经完成并且可以正常使用),应该仅从序列号中正确插入“清单”。

0 个答案:

没有答案