2013-07-06 46 views
0

如何在提交表單字段後更改表單字段的標籤?在提交的表單中更改標籤 - finishView函數?

實施例形式

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)}}」。 我只使用FormType。 如果數據['id']低於1,則有一個添加按鈕。如果ID高於0,則存在保存按鈕。

第一次提交新表單後,實體將被保存,完成頁面加載後,我會看到「添加」字段,而不是「保存」字段。

如果我手動重新加載整個頁面,我看到保存按鈕...

回答

1

你不需要finishView的方法來達到你想要什麼。您正在刪除並重新添加該按鈕。這沒有任何意義。

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $buttonName = $options['data']->getId() > 0 ? 'save' : 'add'; 
    $builder 
     ->add(/* ... */) 
     ->add($buttonName, 'submit', array('label' => $buttonName)) 
    ; 
} 
+0

錯誤?如果我按照你所說的那樣,按鈕被命名爲「提交」... – Patrick

+0

很好,謝謝! – Joe