2016-12-02 43 views
0

在我的管理我有一個一對多定義爲它的工作:索納塔管理 - 無法獲取sonata_type_collection與模態

/** 
* @ORM\OneToMany(targetEntity="Module", mappedBy="sequence", cascade={"persist", "remove"}) 
*/ 
private $modules; 

而且相逆的一面:

/** 
* @ORM\ManyToOne(targetEntity="ModuleSequence", inversedBy="modules", cascade={"persist"}, fetch="LAZY") 
* @ORM\JoinColumn(name="sequence_id", referencedColumnName="id") 
*/ 
protected $sequence; 

在我的管理類我定義的'模塊'字段:

->add('modules', 'sonata_type_collection',array(
     'by_reference' => false 
)) 

最後在ModuleSequence實體中,這裏是addModule方法:

 /** 
    * Add modules 
    * 
    * @param \AppBundle\Entity\Module $module 
    * @return ModuleSequence 
    */ 
    public function addModule(\AppBundle\Entity\Module $module) 
    { 
     $module->setSequence($this); 
     $this->modules[] = $module; 

     return $this; 
    } 

我有「添加」按鈕,我得到的模態,我填寫並驗證。 Ajax請求被髮送到分析器,但不會出現新行。

'sequence_id'沒有在數據庫中設置,我不知道爲什麼...請任何想法?

當我使用'inline'&'表'選項時,該ID設置良好。

回答

0

有相同的問題,並通過重寫prePersist和preUpdate方法解決它,然後堅持關聯。

public function prePersist($object) 
{ 
    $this->persistBlocks($object); 

    $content->mergeNewTranslations(); 
} 

public function preUpdate($object) 
{ 
    $this->prePersist($object); 
} 

private function persistModules($object) 
{ 
    $em = $this->getConfigurationPool()->getContainer()->get('doctrine.orm.entity_manager'); 

    foreach($object->getModules() as $module) 
    { 
     $module->setObject($object); // change Object to the name of your Entity!! 
     $em->persist($module); 
    } 
}