【问题标题】:Symfony 3 and Sonata Admin file uploadSymfony 3 和 Sonata Admin 文件上传
【发布时间】:2017-04-11 22:09:07
【问题描述】:

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

所以我有 Post 实体

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.

【问题讨论】:

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

标签: php symfony sonata-admin


【解决方案1】:

在深入研究表单类型类后,我注意到我没有通过 configureOptions 使用 data_class 设置默认值:

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

之后,这个文件的底层数据变成了一个 File 对象而不是一个数组。

【讨论】:

    猜你喜欢
    • 2018-01-20
    • 2018-01-27
    • 2016-06-02
    • 1970-01-01
    • 2016-07-08
    • 2014-03-09
    • 2017-01-25
    • 2015-11-06
    • 2023-04-01
    相关资源
    最近更新 更多