【发布时间】:2016-08-12 13:58:44
【问题描述】:
我有一个 Comment 实体,它与 FileUpload 实体具有多对一关系,以允许附加图像。这是 Comment 实体中的关系:
/**
* @ORM\ManyToOne(targetEntity="CMSBundle\Entity\FileUpload", cascade={"persist"} )
* @ORM\JoinColumn(name="image_id", referencedColumnName="id")
*/
protected $image;
FileUpload 实体只是将一些文件信息存储在 DB 中,并有一个 File 字段来启用表单中的上传。这是一个sn-p:
/**
* @ORM\Entity
* @ORM\Table(name="file_uploads")
*/
class FileUpload {
/**
* @ORM\Column(type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(type="string", length=20)
*/
private $fileExtension;
/**
* @Assert\File(maxSize="6000000")
*/
private $file;
...
我在 Comment 表单中创建 image 字段如下:
$builder->add('image', new \CMSBundle\Form\FileUploadType(),
array('required'=>false));
这里是我在 FileUploadType 中创建文件字段的地方:
$builder->add('file',null, array(
'required'=>false,
'label'=>false
));
这在我的一个应用程序中运行良好,但是现在我在另一个应用程序中使用它,并且在创建评论时上传图像时收到以下错误消息:
Expected argument of type "string", "CMSBundle\Entity\FileUpload" given
Stack Trace
1. in vendor/symfony/symfony/src/Symfony/Component/Validator/Constraints/FileValidator.php at line 119
2. at FileValidator ->validate (object(FileUpload), object(File))
in vendor/symfony/symfony/src/Symfony/Component/Validator/Validator/RecursiveContextualValidator.php at line 862
我已经尝试通过 Symfony 代码来查找问题,并且 FileValidator 似乎附加到 Comment 中的图像字段,这没有意义,因为我在创建表单时指定它是 FileUploadType。这也适用于不同的应用程序,所以我可以看到为什么它不能在这里工作。有谁知道这可能是什么原因造成的?
【问题讨论】:
标签: php forms symfony doctrine