Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 条令2多人和预先更新_Php_Symfony_File Upload_Doctrine Orm - Fatal编程技术网

Php 条令2多人和预先更新

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

我使用的是Symfony2.5和条令2.4.2。 我有两个实体,它们扩展了

第页:

使用表单集合创建并将图像添加到

当我为PageImage创建一个新条目时,它工作得很好,PrePersist、PreUpdate、PostPersist、PostUpdate都运行

但是,当我尝试更改现有页面图像的图像时,事件不会启动,也不会上载新图像

更新: 它不会更新,因为$file字段只是一个虚拟字段,不会看到新数据,也不会触发事件,因此最简单的解决方案是:

  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();
}