如何在提交表单字段后更改表单字段的标签?
示例表格
class TestType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('test', 'number')
->add($options['data']->getId() > 0 ? 'save' : 'add', 'submit')
;
}
public function finishView(FormView $view, FormInterface $form, array $options)
{
if($form->has('add'))
{
$form->remove('add');
$form->add('add', 'submit', array('label' => 'save'));
}
}
public function getName()
{
return '';
}
}
表单完全由“{{form(form)}}”生成。 我只使用FormType。 如果数据['id']低于1,则有一个添加按钮。如果id高于0,则有一个保存按钮。
首次提交新表单后,实体将被保存,在完成页面加载后,我会看到“添加”字段而不是“保存”字段。
如果我手动重新加载完整页面,我会看到保存按钮...
答案 0 :(得分:2)
您不需要finishView
方法来实现您想要的效果。您正在删除并重新添加添加按钮。这没有任何意义。
public function buildForm(FormBuilderInterface $builder, array $options)
{
$buttonName = $options['data']->getId() > 0 ? 'save' : 'add';
$builder
->add( /* ... */)
->add($buttonName, 'submit', array('label' => $buttonName))
;
}