我安裝了用於管理聯機庫的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