我已按照this添加上传文件的功能,但我遇到了一些问题。我实际上复制了Using Lifecycle Callbacks
部分的功能。我没有课程Document
,而是有一个课程Friend
:
//...
/**
* @Assert\File(maxSize="6000000")
*/
public $picture;
/**
* @ORM\Column(type="string", length=255, nullable=true)
*/
private $path;
//...
上传和编辑工作,但删除时遇到问题。我想有两个选项 - Remove the picture
和Delete 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?
答案 0 :(得分:1)
您需要保留您的朋友实体并刷新实体管理器