【发布时间】:2012-07-21 17:08:54
【问题描述】:
我正在尝试将 SonataMediaBundle 与另一个实体相关联:Products 与 ManyToMany 关系。
架构和关系创建良好。
但是,当我编辑或创建新产品时,我尝试添加一个按钮,我可以在其中通过媒体库搜索媒体文件,并添加一个按钮来上传新文件。
对于 OneToMany 关系,这很容易在 Admin\ProductAdmin::configureFormFields 中通过添加:
->add('image', 'sonata_type_model_list', array(
'required' => false
), array(
'link_parameters' => array(
'context' => 'default',
'provider' => 'sonata.media.provider.image'
)
))
所以我得到了与 SonataMediaBundle 库中已使用的相同的 3 个图标(从库中添加、上传和删除)
但是 在多对多关系上,这是不可能的!因为每次我选择一种媒体时,它都会取代之前的媒体。所以我不能选择多种媒体类型。
我想过使用与 The Gallery 相同的方式 (galleryHasMedia)
->add('galleryHasMedias', 'sonata_type_collection', array(
'by_reference' => false
), array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position',
'link_parameters' => array('context' => $context)
))
但是,它确实很复杂。 如何通过多对多关系在另一个实体上选择或上传多个媒体文件?
【问题讨论】:
-
->add('image', 'sonata_type_model', array('required' => false, 'multiple'=>true))呢? -
您可以找到示例演示
@sonata-media-upload-multiple-images
标签: symfony sonata-admin