如何只得到了改变实体,经过提交?

问题描述 投票:0回答:1

我有a collection of forms像在下面的代码,这导致了如下所示(具有两个例子的条目)的一种形式:

当点击提交,数据I到的形式提供(助洗剂)实例相应的更新。

问题:我的问题是,该列表可能会很长,所以我需要了解哪些情况下已被更新的方式。

我想过存储原始数据的克隆(这里$leadPartnerList在我的会议。但是,这感觉不对。

是否symfony中(具体表单生成器)提供这样的功能开箱?或者,这将是一个有效的解决方案,以了解在表单中的哪些字段已被更新,并且不?

我的嫩枝:

{% block content %}

<div>

    {{ form_start(form) }}
    {% for partner in lead_partners %}
        {{ form_row(partner.name) }}
    {% endfor %}
    {{ form_end(form) }}

</div>

{% endblock content %}

我的控制器代码:

public function overview(Request $request, \App\Utility\LeadPartnerLoader $LeadPartnerLoader)
{
    $leadPartnerList = $leadPartnerLoader->loadAll();
    $formBuilderData = [
        'lead_partners' => $leadPartnerList
    ];

    $listForm = $formFactory->createNamedBuilder('listForm', FormType::class, $formBuilderData)
        ->add('lead_partners', CollectionType::class, [
            'entry_type' => LeadPartnerFormType::class,
            'allow_add' => true
        ])
        ->add('submit', SubmitType::class, [
            'label' => 'Submit Changes'
        ])
        ->getForm();

    ... handleRequest and so on and so forth...
}

而表单类型(LeadPartnerFormType):

public function configureOptions(OptionsResolver $resolver)
{
    $resolver->setDefaults(array(
        'data_class' => LeadPartner::class,
    ));
}

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name', TextType::class);
}

$leadPartnerList是与阵列中的每个条目内LeadPartner实例类型array的。

请注意:我不是在这里使用原则!

symfony symfony-forms symfony4 formbuilder
1个回答
-1
投票

使用symfony的事件监听或EventSubscriber。请参阅:https://symfony.com/doc/current/doctrine/event_listeners_subscribers.html

© www.soinside.com 2019 - 2024. All rights reserved.