我有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一个很好的资源。