Php 条令2多人和预先更新
我使用的是Symfony2.5和条令2.4.2。 我有两个实体,它们扩展了 第页: 使用表单集合创建并将图像添加到 当我为PageImage创建一个新条目时,它工作得很好,PrePersist、PreUpdate、PostPersist、PostUpdate都运行 但是,当我尝试更改现有页面图像的图像时,事件不会启动,也不会上载新图像 更新: 它不会更新,因为$file字段只是一个虚拟字段,不会看到新数据,也不会触发事件,因此最简单的解决方案是:Php 条令2多人和预先更新,php,symfony,file-upload,doctrine-orm,Php,Symfony,File Upload,Doctrine Orm,我使用的是Symfony2.5和条令2.4.2。 我有两个实体,它们扩展了 第页: 使用表单集合创建并将图像添加到 当我为PageImage创建一个新条目时,它工作得很好,PrePersist、PreUpdate、PostPersist、PostUpdate都运行 但是,当我尝试更改现有页面图像的图像时,事件不会启动,也不会上载新图像 更新: 它不会更新,因为$file字段只是一个虚拟字段,不会看到新数据,也不会触发事件,因此最简单的解决方案是: public function setFil
public function setFile(UploadedFile $file = null)
{
$this->temp = $this->getPath();
$this->file = $file;
$this->preUpload();
}
在您的编辑操作中,您必须手动利用“上载”方法对当前图像进行如下操作
$currentImage->upload();
$entityManager->persist($currentImage);
$entityManager->flush();
我找到了一个解决方案,也许它不是很漂亮,有人可以建议任何其他方法来解决这个问题 我已经弄明白了,问题出在哪里,因为$file是虚拟字段原则认为实体中没有新数据,不需要保存或更新它,并且事件没有触发,所以我需要自己在setFile中运行它:
如果条令中有这样的事件,为什么我需要手动执行此操作?这是不对的。因为在你的文件中,Entity@ORM\HasLifecycleCallbacks没有被使用..我在PageImage Entity中有*@ORM\HasLifecycleCallbacks,这就足够了,当我创建新实体时,它的工作很好如果你自己找到了答案,太好了!回答自己的问题是允许的,如果其他人的回答对你不起作用,你会受到鼓励。请把它作为答案贴在下面,而不是作为问题的一部分。
$currentImage->upload();
$entityManager->persist($currentImage);
$entityManager->flush();
public function setFile(UploadedFile $file = null)
{
$this->temp = $this->getPath();
$this->file = $file;
$this->preUpload();
}