文件上传 - 它删除文件,但不删除路径 - Symfony2 / Doctrine2

时间:2012-08-30 11:42:15

标签: symfony doctrine-orm

我已按照this添加上传文件的功能,但我遇到了一些问题。我实际上复制了Using Lifecycle Callbacks部分的功能。我没有课程Document,而是有一个课程Friend

//...
/**
     * @Assert\File(maxSize="6000000")
     */
    public $picture;

    /**
     * @ORM\Column(type="string", length=255, nullable=true)
     */
    private $path;
//...

上传和编辑工作,但删除时遇到问题。我想有两个选项 - Remove the pictureDelete the picture - 第一个只会将当前路径设置为null,文件将保留在存储文件的文件夹中,而第二个将设置为null的路径,也将删除该文件。

坏消息是我无法成为null的道路。该文件已删除,但路径仍然存在。

这是文档中的功能:

   /**
     * @ORM\PostRemove()
     */
    public function removeUpload()
    {
        if ($picture = $this->getAbsolutePath()) {
            unlink($picture);
        }
    } 

public function getAbsolutePath()
    {
        return null === $this->path ? null : $this->getUploadRootDir().'/'.$this->path;
    }

这是我控制器中的操作:

public function removePictureAction($id)
    {
        $em = $this->getDoctrine()->getEntityManager(); 
         $friend = $em->getRepository('EMMyFriendsBundle:Friend')->find($id);
         $friend->removeUpload();
         $var=null;
         $friend->setPath($var);
         return $this->redirect($this->generateUrl('friend_id', array('id' => $id))); 
    }

但路径仍然存在...如何删除它并将其再次设置为null?

1 个答案:

答案 0 :(得分:1)

您需要保留您的朋友实体并刷新实体管理器