Php 在sonata_type_集合中指定哪个管理_代码?

Php 在sonata_type_集合中指定哪个管理_代码?,php,symfony,sonata-admin,sonata-media-bundle,Php,Symfony,Sonata Admin,Sonata Media Bundle,在Sonata项目中,我有一个页面实体和一个媒体实体。My Page实体包含一个images属性,该属性包含媒体实体的ArrayCollection。在我的页面实体中,我使用以下工作代码: ->add('galleries', 'sonata_type_collection', array( 'label' => "Galleries", //'cascade_validation' =>

在Sonata项目中,我有一个页面实体和一个媒体实体。My Page实体包含一个images属性,该属性包含媒体实体的ArrayCollection。在我的页面实体中,我使用以下工作代码:

            ->add('galleries', 'sonata_type_collection', array(
                'label' => "Galleries",
                //'cascade_validation' => true,
                'required' => false,
            ), array(
                'edit' => 'inline',
                'inline' => 'table',
            ))
。。。这在我的页面编辑屏幕上提供了一个很好的内联表单,允许我创建和关联内联库

但当我尝试这个:

            ->add('images', 'sonata_type_collection', array(
                'label' => "Standalone Images",
                //'cascade_validation' => true,
                'required' => false,
            ), array(
                'edit' => 'inline',
                'inline' => 'table',
            ))
。。。我发现我得到了一个空白的复选框,没有表格。页面的图像字段包含Sonata Media Bundle中媒体对象的ArrayCollection

我假设我需要使用admin_code选项来指定一个admin值。我应该在该选项中输入什么字符串

===

编辑1:

通过改变这一点:

                ->add('images', 'sonata_type_collection', array(
                    'label' => "Standalone Images",
                    'required' => false,
                ), array(
                    'edit' => 'inline',
                    'inline' => 'table',
                ))
。。。为此:

                ->add('images', 'sonata_type_collection', array(
                    'label' => "Standalone Images",
                    'required' => false,
                ), array())
。。。我能够得到一个模式框来显示创建新的媒体实体

然而,我发现新的媒体实体并没有出现在我的页面编辑屏幕上。因此,这只能部分解决问题

===

编辑2:

一点日志记录显示我的页面实体的getImages方法正在被调用,但同一实体的setImages和addImages方法没有被调用。我不知道如何强制应用程序调用这些方法,也不知道如何确保向这些方法提供正确的媒体实体

===

编辑3:

以下是my Page.orm.xml文件中的映射:

    <many-to-many field="images" target-entity="Application\Sonata\MediaBundle\Entity\Media">
        <cascade>
            <cascade-persist />
        </cascade>
        <join-table name="page_image">
            <join-columns>
                <join-column name="page_id" referenced-column-name="id" />
            </join-columns>
            <inverse-join-columns>
                <join-column name="image_id" referenced-column-name="id" unique="true" />
            </inverse-join-columns>
        </join-table>
    </many-to-many>

如果在其他管理员中编辑集合,则必须将“按引用”选项设置为false。这是为了调用嵌入对象上的setter方法。特别是在多对多关系上,这是一个常见的问题