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