2015-12-31 26 views
0

我有2個實體和我創建了2種獨立的表單類型爲他們。每種表單類型都有幾個字段和一個提交按鈕。Symfony的嵌入形式,有多個按鈕

一個實體的只是一個基本表(地址),這種形式的類型是獨立使用一個網頁上,並如預期顯示出它的所有字段和提交按鈕的工作原理。

的其他實體有關係的地址表。這種表單類型嵌入地址表單類型以及一些自己的字段和一個提交按鈕。問題是這種表單類型在視圖中顯示時顯示2個不需要的按鈕。我會假設,如果我嵌入了多種表單類型,它也會爲每個表單顯示一個按鈕。

是否有可能隱藏在當前形式類型的嵌入形式類型所以只有該按鈕的按鈕時所顯示?

回答

3

這樣做的一個好方法是從表單類型中完全刪除提交按鈕,並通過樹枝文件添加提交按鈕,表單將在大多數情況下被重用,並且在您的情況下重用它們,但我就不會是適合把它們放在控制器,你會被混合控制器邏輯的介紹,所以最好的地方,把提交按鈕在樹枝。 Best Practice

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 
    )); 
} 

,並在控制器,傳遞一個錯誤的將其關閉

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

heres一個很好的資源。