2014-03-05 34 views
2

我有兩個與OneToOne關係的實體:Objectif和Image。索納塔管理軟件包:無法刪除與sonata_type_admin的關係

奏鳴曲管理員束

,我想能夠從客觀刪除的圖像(圖像被formField定義與sonata_type_admin。

我能夠勾選複選框「刪除」,但是當我點擊更新按鈕,沒有任何變化,圖像實體還在這裏。這裏是我的代碼:

/** objectiveAdmin form field **/ 
/** 
* @param FormMapper $formMapper 
*/ 
protected function configureFormFields(FormMapper $formMapper) 
{ 
    $formMapper 
     ->with("General") 
      ->add('titre') 
      ->add('description') 
     ->with("Icone") 
      ->add('image', 'sonata_type_admin', array(), array('required' => false, 'edit' => 'admin')) 
    ; 
} 


/** objective entity class **/ 
    /** 
    * @ORM\OneToOne(targetEntity="acme\Bundle\Entity\Image" , cascade={"persist"} , orphanRemoval=true) 
    */ 
    private $image; 

最後我奏鳴曲管理OBJECTIF頁面的截圖:

enter image description here

thx這麼多的任何答案!

回答

2

我終於成功通過附加父管理類的更新前的函數來實現我的問題:

這裏是代碼:

public function preUpdate($objectif) { 

    // i get the _delete variable of my sonata_type_admin Image widget 
    $params    = $this->getRequest()->request->get($this->getUniqid()); 
    $image    = $params['image']; 

    // if the checkbox is checked i set NULL to my objectif image 
    if (isset ($image['_delete']) && !empty ($image['_delete'])) 
    { 
     $objectif->setImage(null) ; 
    }else{ 
     $objectif->setImage($objectif->getImage()); 
    } 

    $this->manageEmbeddedImageAdmins($objectif); 
} 

// finally , i call my Image remove function to delete the media ... 
+0

感謝您關於如何做到這一點的想法 –

1

設置父實體:

/** 
* @ORM\OneToOne(targetEntity="NameChildEntity", mappedBy="idForeignKey", cascade={"persist", "remove"}, orphanRemoval=true) 
* 
*/ 
private $image; 

設置子實體:

/** 
* @var \Objective 
* 
* @ORM\OneToOne(targetEntity="NameParentEntity", inversedBy="image") 
* @ORM\JoinColumns({ 
* @ORM\JoinColumn(name="id_foreign_key", referencedColumnName="id") 
* }) 
*/ 
private $any_name; 

然後運行:

$ php app/console doctrine:generate:entities YourBundle:Objective 

$ php app/console doctrine:generate:entities YourBundle:Image 

這將創建一個在你的實體必要的方法。

+0

我的形象的實體是一個通用的實體至極他人使用實體以鏈接圖像,所以我不能使用雙向鏈接:/ –

+0

閱讀本文,我希望可以幫助[一對一的關係](http://stackoverflow.com/questions/15744323/symfony2-doctrine2-trouble-with -optional-one-to-one-relation) –

+0

對不起,但我不能使它工作...並且我不知道手動檢查是否從sonata_type_admin中刪除了按鈕wi dget被選中或不被選中。 –