在自定义类型中使用 sonata_type_collection
Use sonata_type_collection inside custom type
我想要做的是将 sonata_type_collection 添加到我的自定义 formType。
正常的方法是将 sonata_collection_type 添加到 AdminClass 中的 $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'
))
}
它不起作用(它只出现 filed 标签)。问题是错误的模板,所以我尝试设置 formAdminTemplate
我是在view
中设置模板制作的
{% form_theme formElement 'SonataDoctrineORMAdminBundle:Form:form_admin_fields.html.twig' %}
问题出在 'formTheme' 中的 sonata_admin 变量。我的表单中不存在此变量。
当然我的表单类型与 admin 相关 class 但我不知道如何将这种关系告诉 symfony
您的 collection child 需要管理员 class :
$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'
)
);
我找到了解决办法。我使用 admin class 定义了表单,而不是使用我的自定义类型。我需要管理员以外的表格,所以有点困难。
首先,在我的控制器中,我从服务中获得管理员 class。在 admin class 中,我重写了 3 个用于创建表单的方法
public function getFormBuilder()
public function defineFormBuilder(FormBuilder $formBuilder)
public function buildForm()
然后我不得不通过奏鸣曲管理方式保存我的实体。使用 create 方法代替 handleRequest.
我想要做的是将 sonata_type_collection 添加到我的自定义 formType。 正常的方法是将 sonata_collection_type 添加到 AdminClass 中的 $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'
))
}
它不起作用(它只出现 filed 标签)。问题是错误的模板,所以我尝试设置 formAdminTemplate 我是在view
中设置模板制作的 {% form_theme formElement 'SonataDoctrineORMAdminBundle:Form:form_admin_fields.html.twig' %}
问题出在 'formTheme' 中的 sonata_admin 变量。我的表单中不存在此变量。
当然我的表单类型与 admin 相关 class 但我不知道如何将这种关系告诉 symfony
您的 collection child 需要管理员 class :
$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'
)
);
我找到了解决办法。我使用 admin class 定义了表单,而不是使用我的自定义类型。我需要管理员以外的表格,所以有点困难。
首先,在我的控制器中,我从服务中获得管理员 class。在 admin class 中,我重写了 3 个用于创建表单的方法
public function getFormBuilder()
public function defineFormBuilder(FormBuilder $formBuilder)
public function buildForm()
然后我不得不通过奏鸣曲管理方式保存我的实体。使用 create 方法代替 handleRequest.