我已經開始使用Sonata Admin
軟件包,我正在關注如何使用軟件包映射實體以創建管理界面。沒有爲班級定義實體管理器DateTime
我創建了一個名爲Post
的實體,這是配置YML文件:
Emiliano\PostsBundle\Entity\Post:
type: entity
table: null
repositoryClass: Emiliano\PostsBundle\Entity\PostRepository
id:
id:
type: integer
id: true
generator:
strategy: AUTO
fields:
title:
type: string
column: Title
lenght: 100
published:
type: boolean
column: Published
publishingDate:
type: datetime
column: Publishing_Date
nullable: TRUE
lifecycleCallbacks: { }
然後在我的Admin
類我有configureFormFields
方法:
protected function configureFormFields(FormMapper $formMapper) {
$formMapper->add('title', 'text')
->add('published', 'checkbox', array('required' => false))
->add('publishingDate', 'sonata_type_model_hidden');
}
我發現sonata_type_model_hidden
的奏鳴曲admin documentation。我想要實現的是以編程方式處理髮布日期(例如,僅當複選框published
被選中時設置日期)纔將隱藏實現給用戶。
一切工作正常進行創建,刪除和讀取,當它涉及到修改的實體,我得到的堆棧跟蹤這樣的信息:如果我告訴現場的一切工作正常
No entity manager defined for class DateTime
In sonata-project/doctrine-orm-admin-bundle/Sonata/DoctrineORMAdminBundle/Model/ModelManager.php at line 214
,我想也使用:
->add('publishingDate', 'hidden');
沒有成功。
這裏究竟是什麼問題?是否因爲Sonata Admin
試圖用實體值填充表單併爲publishingDate填充DateTime
,而在表單說明中我寫了sonata_type_model_hidden
?如果是這樣,我怎麼能繞過這個?
那麼ModelManager中的第214行是什麼?我猜你可能會使用DateTime而不是\ DateTime。純粹的猜測。 – Cerad
'$ em = $ this-> registry-> getManagerForClass($ class);'和我正在使用\ DateTime。 –
然後檢查你的代碼,因爲我很確定你有$ class ='DateTime',並且肯定不會有$ em。 – Cerad