我正在尝试使用奏鸣曲项目中的一些捆绑包来编辑 1:N 关联:
AMediaList
可以Media
分配许多对象。教义配置是正确的,我的实体MediaAdmin
的管理类的配置也是正确的。Media
MediaList 管理员应该为我的媒体嵌入表单并允许在列表中添加/删除项目:
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper->add('media', 'sonata_type_collection',
[
'by_reference' => false,
],
[
'edit' => 'inline',
'inline' => 'table'
]);
}
在 symfony 3 中,对诸如“sonata_type_collection”之类的字符串形式类型的支持已被删除。但是,SonataCoreBundle 添加了一些应该重新启用此功能的功能(请参阅文档 3.1)。
不幸的是,这对我不起作用,我得到一个 InvalidArgumentException(无法加载类型“sonata_type_collection”)
- 我确定
FormHelper::registerFormTypeMapping
并通过断点SonataCoreBundle
和SonataAdminBundle
调试被调用。 - 我尝试使用 FQCN 代替(
Sonata\CoreBundle\Form\Type\CollectionType
)但是奏鸣曲在sonata_type_admin
内部使用,当我按下“添加”按钮时失败 - 它在几天前工作并且失败了,因为我
composer update
没有改变我的 composer.json 中的任何内容就运行了
那么如何在 Symfony 3.X 中使用这些表单类型呢?是否需要任何额外的配置?
我的 composer.json (不是所有条目,但我认为最相关):
"php": ">=5.5.9",
"doctrine/doctrine-bundle": "^1.6",
"doctrine/orm": "^2.5",
"sonata-project/admin-bundle": "^3.20.1",
"sonata-project/doctrine-orm-admin-bundle": "^3.1",
"symfony/symfony": "3.3.2",