Php 在sonata_type_集合中指定哪个管理_代码?
在Sonata项目中,我有一个页面实体和一个媒体实体。My Page实体包含一个images属性,该属性包含媒体实体的ArrayCollection。在我的页面实体中,我使用以下工作代码: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' =>
->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方法。特别是在多对多关系上,这是一个常见的问题