我相信我已经尝试了很多教程,现在我没有想法了。我想创建文件实体,该实体将保存上传到系统的每个文件的详细信息,并将使用与其他实体的一对一关系。我在Symfony 2.4上使用过这种方法,这很好,但是对于Symfony 3,我遇到了意想不到的错误。我使用Sonata Admin进行后端数据管理。问题之一是我在文件设置器setFile上获取数组而不是File对象
所以我有邮政实体
class Post extends BasePageModel
{
...
/**
* @ORMOneToOne(targetEntity="File", cascade={"persist"})
* @ORMJoinColumn(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.
在深入研究表单类型类后,我注意到我没有通过 configureOptions 设置data_class默认值:
public function configureOptions(OptionsResolver $resolver)
{
$resolver->setDefaults(array(
'data_class' => BaseFile::class
));
}
之后,此文件下的数据已变为 File 对象而不是数组。