我試圖管理與sonata admin一對多關係實體不保存id字段
一個一對多的關係其實我想有多對多的關係就像sonata media bundle
有gallery > media
一個HomePage
有很多Story
小號這應該是排序等
也Theres HomePageStory
管理的關係,因爲這裏建議:
https://github.com/sonata-project/SonataAdminBundle/issues/1231
HomePage.orm.yml
oneToMany:
HomePageStorys:
targetEntity: HomePageStory
mappedBy: HomePage
cascade: ["persist", "merge", "remove"]
HomePageAdmin.php
->add(
'HomePageStorys',
'sonata_type_collection',
array(
'cascade_validation' => true,
),
array(
'edit' => 'inline',
'inline' => 'table',
'sortable' => 'position'
)
);
HomePageStory.orm.yml
manyToOne:
HomePage:
targetEntity: HomePage
joinColumn:
name: homepage_id
referencedColumnName: id
Story:
targetEntity: Story
joinColumn:
name: story_id
referencedColumnName: id
HomePageStoryAdmin
protected function configureFormFields(FormMapper $formMapper)
{
$link_parameters = array();
if ($this->hasParentFieldDescription()) {
$link_parameters = $this->getParentFieldDescription()->getOption('link_parameters', array());
}
if ($this->hasRequest()) {
$context = $this->getRequest()->get('context', null);
if (null !== $context) {
$link_parameters['context'] = $context;
}
}
$formMapper
->add(
'Story',
'sonata_type_model_list',
array('required' => false),
array(
'link_parameters' => $link_parameters
)
)
->add('position', 'hidden');
}
這工作得很好,因爲我可以在HomePage Admin上添加HomePageStories並從內聯列表中選擇一個Story。
但它只是存儲在數據庫中的story_id
而homepage_id
保持爲空。如果我手動設置homepage_id,它會顯示在主頁管理中。
任何線索我需要做什麼來保存父實體(HomePage)的ID保存?
這是索納塔 「已知」 的錯誤。但問題是,索納塔指責這一點,反之亦然。所以它可能不會被修復。 – NoScope