如何确定提交了哪个按钮?

时间:2019-02-13 11:29:00

标签: symfony symfony-forms symfony4 formbuilder

我有一个FormBuilder构建的表单,例如

enter image description here

,每行上都有一个(提交)按钮,用于删除条目。

在查看生成的HTML代码时,按钮在方案中的名称类似于

listForm[leadPartners][0][remove]
listForm[leadPartners][1][remove]
...

到目前为止,这对我来说很有意义。

问题是,当表单由某个remove-buttons提交时,我尝试获取该按钮的名称,通过调用$listForm->getClickedButton()->getName()来确定返回的名称,以确定哪个按钮是提交的按钮一直是remove,我找不到一种方法来获取按钮的编号,以知道它属于我的哪个实体。

问题:如何知道按下了哪个按钮?

表单类型:

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

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

相关的树枝代码

{% for partner in listForm.lead_partners %}
     <div class="form-group row">
          <div class="col-10" >{{ form_widget(partner.name) }}</div>
          <div class="col-2">{{ form_widget(partner.remove) }}</div>
     </div>
{% endfor %}

信息:I don't want to do this

1 个答案:

答案 0 :(得分:-1)

您可以按照官方文档https://symfony.com/doc/current/form/multiple_buttons.html进行操作 但是,为什么您需要以这种方式进行清除? Symfony很好地处理了收集项的删除,您甚至可以使用回调来手动处理它们。无需以这种方式进行。