如何在Sonata Admin中继承FormType?

如何在Sonata Admin中继承FormType?

问题描述:

如何在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, 
     ) 

} 

但随后在两个地方我有相同的代码。

如何重构此最佳方法?

您可以在文档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, 
     )) 

}