如何在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,
)
))
// ...
;
}
然后在两个地方我有相同的代码。
如何重构这个?
答案 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,
))
// ...
;
}