我安装了Sonata Admin捆绑包来管理在线图书馆。我只是想将image
链接到author
.
映射是正确的:[映射] 正常 - 映射文件正确。[数据库]确定 - 数据库架构与映射文件同步。
这是我author
实体的字段:
/**
*
* @ORMColumn(name="image", type="string", length=255)
* @ORMOneToOne(targetEntity="ProjectBackendBundleEntityImage", cascade={"persist"})
* @ORMJoinColumn(nullable=false)
*/
private $image;
我为每个实体创建一个管理员类:
图像管理员.php工作正常。当我添加新图像时,数据库会更新并上传图像。
然后,由于文档(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: ProjectBackendBundleAdminAuthorAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "Author" }
arguments:
- ~
- ProjectBackendBundleEntityAuthor
- ~
sonata.admin.image:
class: ProjectBackendBundleAdminImageAdmin
tags:
- { name: sonata.admin, manager_type: orm, group: "Content", label: "Image" }
arguments:
- ~
- ProjectBackendBundleEntityImage
- 'SonataAdminBundle:CRUD'
我遵循了所有文档,但现在我没有看到问题。
您的映射不正确。不应该有这样的线。
@ORMColumn(name="image", type="string", length=255)
@ORMColumn
凌驾于@ORMOneToOne
之上,教义将这个领域视为简单的领域 - 而不是关联。
http://doctrine-orm.readthedocs.org/en/latest/reference/annotations-reference.html#annref-onetoone