我安装了用于管理联机库的Sonata Admin捆绑包。我只想将image
链接到author
。OneToOne与sonata_type_admin的关系:字段未链接到管理员
映射无误: [映射]确定 - 映射文件是正确的。 [数据库] OK - 数据库模式与映射文件同步。
这是我author
实体领域:
/**
*
* @ORM\Column(name="image", type="string", length=255)
* @ORM\OneToOne(targetEntity="Project\BackendBundle\Entity\Image", cascade={"persist"})
* @ORM\JoinColumn(nullable=false)
*/
private $image;
我创建一个管理类为每个实体:
ImageAdmin.php正常工作。当我添加一个新的图像时,数据库被更新并且图像被上传。
然后我创建AuthorAdmin感谢文档(http://sonata-project.org/bundles/admin/master/doc/reference/form_types.html#sonata-type-admin)。
AuthorAdmin.php
class AuthorAdmin extends Admin
{
// Fields to be shown on create/edit forms
protected function configureFormFields(FormMapper $formMapper)
{
$formMapper
->add('name', 'text', array('label' => 'Author name'))
->add('image', 'sonata_type_admin')
;
}
// Fields to be shown on filter forms
protected function configureDatagridFilters(DatagridMapper $datagridMapper)
{
$datagridMapper
->add('name')
;
}
// Fields to be shown on lists
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
->addIdentifier('name')
;
}
}
但我一直有这样的消息:
当前场
image
未链接到一个管理员。请创建目标实体一个 :``
的管理员们在admin.yml设置:
services:
sonata.admin.author:
class: Project\BackendBundle\Admin\AuthorAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "Author" }
arguments:
- ~
- Project\BackendBundle\Entity\Author
- ~
sonata.admin.image:
class: Project\BackendBundle\Admin\ImageAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "Image" }
arguments:
- ~
- Project\BackendBundle\Entity\Image
- 'SonataAdminBundle:CRUD'
我跟所有的文档,但现在我没有看到这个问题。
我不知道这个关于@ORM \ Column的行为。非常感谢启发这个细节。它现在完美。我只想了解这个注释如何防止Sonata Admin Bundle获取Image Admin类。我的意思是,当包开始生成表单时,它使用Doctrine来检查现有的关系? – 2014-11-25 20:33:21
我认为索纳塔看着Doctrine的ClassMetadataInfo :: associationMappings ['image'] ['targetEntity']'值。但是@ORM \ Column没有像@ORM \ OneToOne这样的关联(这与'AnnotationDriver'内部行为有关)。 – origaminal 2014-11-25 20:39:19
好吧,@ORM \ Column的简单存在可防止ClassMetadataInfo获取图像字段的目标性。我会尝试检查捆绑包的代码。非常感谢分享你的观点。 – 2014-11-25 21:02:21