Symfony嵌入式表单有多个按钮

时间:2015-12-31 07:07:48

标签: php forms symfony

我有2个实体,并为他们创建了2个单独的表单类型。每种表单类型都有一些字段和一个提交按钮。

其中一个实体只是一个基本的表(地址),它的表单类型独立地在页面上使用,并按预期工作,显示其所有字段和提交按钮。

另一个实体与地址表有关系。此表单类型嵌入了地址表单类型以及一些自己的字段和提交按钮。问题是这种表单类型在视图中显示时显示2个不需要的按钮。我假设如果我嵌入了多个表单类型,它也会为每个表单类型显示一个按钮。

是否可以隐藏嵌入表单类型的按钮,以便只显示当前表单类型中的按钮?

2 个答案:

答案 0 :(得分:4)

执行此操作的一种好方法是从表单类型中完全删除提交按钮,并通过twig文件添加提交按钮,表单大部分时间都可以重复使用,在您的情况下,您正在重用它们,如果将演示文稿与控制器逻辑混合在一起,将它们放入控制器是不合适的,因此放置提交按钮的最佳位置在树枝上。 Best Practice

答案 1 :(得分:1)

确定你可以。只需使用..

$form->remove('buttonName');

在您的控制器中。

或者,如果您希望在formtype中处理它

public function buildForm(FormBuilderInterface $builder, array $options)
{
    // ...
    if ($options['use_second_button']) {
        $builder->add('submit2', 'submit');
    }
    // ...
}

public function setDefaultOptions(OptionsResolverInterface $resolver)
{
    $resolver->setDefaults(array(
        'use_second_button' => true
    ));
}

并在控制器中传入false以将其关闭

$form = $this-createForm(new someType(), $entity, ['use_second_button' => false]); 

heres一个很好的资源。