Symfony 3 和 Sonata Admin 文件上传



我相信我已经尝试了很多教程,现在我没有想法了。我想创建文件实体,该实体将保存上传到系统的每个文件的详细信息,并将使用与其他实体的一对一关系。我在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 对象而不是数组。

最新更新