可捕获的致命错误:传递给\ Entity \ Image :: setFile()的参数1必须是Symfony \ Component \ HttpFoundation \ File \ UploadedFile的实例,

时间:2014-06-23 07:53:35

标签: php symfony

我收到此错误

Catchable Fatal Error:参数1传递给swaam \ ImageUploaderBundle \ Entity \ Image :: setFile()  必须是Symfony \ Component \ HttpFoundation \ File \ UploadedFile的实例,

给定的swaam \ ImageUploaderBundle \ Entity \ Image实例,在D:\ xamp \ htdocs \ shams \ vendor \ symfony \ symfony \ src \ Symfony \ Component \ PropertyAccess \ PropertyAccessor.php中调用 在第438行并在D:\ xamp \ htdocs \ shams \ src \ swaam \ ImageUploaderBundle \ Entity \ Image.php第166行中定义

根据提及第166行,其函数setFile()在这里是我的函数

 public function setFile(UploadedFile $file = null)
{
    $this->file = $file;
    // check if we have an old image path
    if (isset($this->path)) {
        // store the old name to delete after the update
        $this->temp = $this->path;
        $this->path = null;
    } else {
        $this->path = 'initial';
    }
}

我甚至无法理解错误,请任何人帮助我并解释错误的原因加上可能的解决方案。

2 个答案:

答案 0 :(得分:4)

我收到了类似的错误消息。我通过将<form method="post" {{ form_enctype(form) }}>添加到我的表单标记来解决它。

答案 1 :(得分:1)

在代表实体的字段的表单中使用choice字段类型时出现此错误。

要解决此问题,我在choice中将entity更改为buildForm,并将此实体应解析的类添加到选项中,因此add语句开始显示如下:

public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder->add(
                  'product', 
                  'entity', 
                  [
                      'class' => 'Acme\AppBundle\Entity\Product',
                  ]
    );
 }