如何在Sonata Admin中继承FormType?

时间:2017-10-20 11:06:55

标签: php symfony sonata-admin sonata symfony-3.2

如何在Sonata Admin中继承FormType?

例如在src / AppBundle / Form / CityType.php中:

class SmsType extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $builder
            ->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,
             )
        ))
        // ...
    ;
}

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

如何重构这个?

1 个答案:

答案 0 :(得分: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,
        ))
        // ...
    ;
}