2017-10-20 132 views
0

如何在Sonata Admin中繼承FormType?如何在Sonata Admin中繼承FormType?

例如在SRC /的appbundle /表格/ CityType.php:

class SmsType extends AbstractType 
{ 
    public function buildForm(FormBuilderInterface $builder, array $options) 
    { 
     ->add('name') 
     ->add('recommend', ChoiceType::class, array(
      'choices' => array(
       'Maybe' => 0, 
       'Yes' => 1, 
       'No' => 2, 
      ), 
     )) 
    } 
} 

的src /的appbundle /管理/ CityAdmin.php:

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('name') 
     ->name('recommend') 

} 

而且在我的管理領域的建議是文字輸入而不是選擇。

我可以:

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('name') 
     ->name('recommend', ChoiceType::class, array(
      'choices' => array(
       'Maybe' => 0, 
       'Yes' => 1, 
       'No' => 2, 
     ) 

} 

但隨後在兩個地方我有相同的代碼。

如何重構此最佳方法?

回答

0

您可以在文檔https://symfony.com/doc/current/form/inherit_data_option.html中找到答案。你所要做的就是將FormType添加到FormMapper中並設置inherit_data選項。該字段的名稱並不重要。

protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->add('sms', SmsType::class, array(
      'inherit_data' => true, 
      'label' => false, 
     )) 

}