Symfony2表单文件上传到两个实体

时间:2013-12-08 15:35:52

标签: php forms symfony file-upload doctrine-orm

我在symfony中有一个表单,我用ajax / xhr2发送到服务器。它包括文本字段和可能的文件(不允许或多个文件)。因此,我创建了一个名为“post”的实体,用于保存提交的文本,执行该文本的用户以及日期/时间。此外,它与名为“upload”的实体的OneToMany关系相关联。

class Post{

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORM\Column(type="text")
 */
private $text;

/**
 * @ORM\Column(type="datetime")
 */
private $created;

/**
 * @ORM\ManyToOne(targetEntity="User", inversedBy="posts")
 * @ORM\JoinColumn(name="users", referencedColumnName="id")
 *
 */
private $author;

/**
 * @ORM\OneToMany(targetEntity="Upload", mappedBy="post")
 */
private $uploads;

此实体保存上传文件中的所有相关数据。

class Upload
{

/**
 * @ORM\Id
 * @ORM\Column(type="integer")
 * @ORM\GeneratedValue(strategy="AUTO")
 */
private $id;

/**
 * @ORM\Column(type="string", length=30)
 */
private $name;

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

/**
 * @ORM\Column(type="datetime")
 */
private $date;

/**
 * @ORM\Column(type="string", length=30)
 */
private $type;

/**
 * @ORM\Column(type="integer")
 */
private $size;

在上传实体中,我还按照http://symfony.com/doc/current/cookbook/doctrine/file_uploads.html

中的说明放置了上传方法

现在,当我保留帖子时,帖子类会尝试上传文件而不是将其保留为上传类。因此,我得到一个错误,即post类中不存在方法setUploads。当我添加它时,我得到的错误是该方法收到了UploadedFile的实例而不是上传。

有没有人能像我建模的方式或如何创建更好的模型那样上传文件?

非常感谢!

1 个答案:

答案 0 :(得分:0)

我写了一篇关于如何将文件上传到Symfony2 here的完整说明。正如您所猜想的那样,您需要将方法setUploads()添加到Post实体。上传的文件将链接到Upload实体,而不是Post本身。