2017-04-11 135 views
0

我相信我已经尝试了很多教程,现在我没有想法。我想创建File实体,它将保存上传到系统的每个文件的详细信息,并将与其他实体使用OneToOne关系。我在Symfony 2.4上使用了这种方法,这很好,但是Symfony 3出现意外错误。我使用Sonata Admin进行后端数据管理。其中一个问题是,我得到阵列,而不是文件对象文件二传手setFileSymfony 3和Sonata管理文件上传

所以我必须张贴实体

class Post extends BasePageModel 
{ 
    ... 
    /** 
    * @ORM\OneToOne(targetEntity="File", cascade={"persist"}) 
    * @ORM\JoinColumn(name="file_id", onDelete="CASCADE", referencedColumnName="id") 
    */ 
    protected $file; 

    ... 

    /** 
    * Set file 
    * 
    * @param File $file 
    * 
    * @return Post 
    */ 
    public function setFile(File $file = null) 
    { 
     $this->file = $file; 

     return $this; 
    } 

    /** 
    * Get file 
    * 
    * @return File 
    */ 
    public function getFile() 
    { 
     return $this->file; 
    } 

    ... 

} 

和我收到一个错误:Expected value of type "File" for association field "Post#$file", got "array" instead.

+0

你能为这个实体提供表单类吗? – xReprisal

回答

0

后挖掘到表单类型类我注意到,我通过configureOptions没有与data_class setDefaults:

public function configureOptions(OptionsResolver $resolver) 
{ 
    $resolver->setDefaults(array(
     'data_class' => BaseFile::class 
    )); 
} 

后的数据文件底层已成为File对象而不是数组。