Symfony 实体更新时可上载的DoctrineExtensions不保留当前值
我正在使用可上传的扩展,对此非常满意。 我有一个实体,其中一个字段是可上传照片,另一个字段是该照片注释的注释。当我第一次创建实体时,我选择文件,并放置注释,一切正常,但当我只想更新注释时,它会丢失先前上传照片的存储路径。如果该字段为空,是否有办法保留旧值 这是我的实体Symfony 实体更新时可上载的DoctrineExtensions不保留当前值,symfony,doctrine,stofdoctrineextensions,doctrine-uploadable,Symfony,Doctrine,Stofdoctrineextensions,Doctrine Uploadable,我正在使用可上传的扩展,对此非常满意。 我有一个实体,其中一个字段是可上传照片,另一个字段是该照片注释的注释。当我第一次创建实体时,我选择文件,并放置注释,一切正常,但当我只想更新注释时,它会丢失先前上传照片的存储路径。如果该字段为空,是否有办法保留旧值 这是我的实体 /** * Photo * * @ORM\Table() * @ORM\Entity * @Gedmo\Uploadable( * path="up/photo", * allowOverwrite=
/**
* Photo
*
* @ORM\Table()
* @ORM\Entity
* @Gedmo\Uploadable(
* path="up/photo",
* allowOverwrite=false,
* appendNumber=true,
* allowedTypes="image/jpeg,image/pjpeg,image/png,image/x-png"
* )
*/
class Photo
{
/**
* @var array
*
* @Gedmo\Translatable
* @ORM\Column(name="annotation", type="string", length=255, nullable=true)
*/
private $annotation;
/**
* @var string
*
* @Gedmo\UploadableFilePath
* @Assert\File(
* mimeTypes={"image/jpeg", "image/pjpeg", "image/png", "image/x-png"}
* )
* @ORM\Column(name="photo", type="string", length=255)
*/
private $photo;
这是我的控制器部分:
if ($entity->getPhoto()) {
$uploadableManager = $this->get('stof_doctrine_extensions.uploadable.manager');
$uploadableManager->markEntityToUpload($entity, $entity->getPhoto());
}
您可以更改实体上的setter:
public function setPhoto($photo) {
if (!$photo) {return $this;}
$this->photo = $photo;
return $this;
我想你指的是用于拍照的setter,而不是用于注释的setter。当我尝试这样做时,它抛出了一个错误:您必须传递FileInfoInterface的实例或AdminBundle\entity\Photo类实体的有效数组。是的,您是对的,我犯了错误,请检查我的编辑,应该有效,如果否,您可以更改!photo to$photo=,您可以在上载新照片并希望保留批注时对批注执行相同的操作。您仍然会收到异常,并显示错误消息:您必须为类AdminBundle\entity\photo的实体传递FileInfoInterface实例或有效数组