我想要做的是将sonata_type_collection添加到我的自定义formType中。 正常的方法是在AdminClass中添加sonata_collection_type到$ formMaper,如:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('elements, 'sonata_type_collection', array(
'some_options' => 'options'
))
}
它工作得很完美,但我有自定义表单类型,当我定义它时:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$formMapper->add('elements, 'sonata_type_collection', array(
'some_options' => 'options'
))
}
它不起作用(它只显示提交的标签)。问题是错误的模板,所以我尝试设置formAdminTemplate 我是通过视图中的设置模板制作的
{% form_theme formElement 'SonataDoctrineORMAdminBundle:Form:form_admin_fields.html.twig' %}
问题是这个' formTheme'中的sonata_admin变量。这个变量不存在于我的表单中。
当然我的表单类型与管理类有关,但我不知道如何告诉symfony这个关系
答案 0 :(得分:0)
您的收集孩子需要一个管理类:
$formMapper->add('customizations', 'sonata_type_collection',
array(
'required' => true,
'type_options' => array('delete' => true),
'by_reference' => false,
'mapped' => true
),
array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'targetEntity' => '/path/to/Entity/Customization',
'admin_code' => 'my.service.customization_admin'
)
);
答案 1 :(得分:0)
我找到解决方案。而是使用我的自定义类型,我使用管理类定义了表单。我在管理员之外需要这个表格,所以这有点困难。
首先,在我的控制器中,我从服务中获取管理类。在管理员类内部,我重写了3个用于创建表单的方法
public function getFormBuilder()
public function defineFormBuilder(FormBuilder $formBuilder)
public function buildForm()
然后我必须通过奏鸣曲管理方式保存我的实体。使用create方法代替handleRequest。