2014-03-05 145 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被选中或不被选中。 –