我按照说明操作: 信https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/usage.md,但保存用户实体时出现以下错误:
Expected argument of type "AppBundle\Entity\File", "Symfony\Component\HttpFoundation\File\UploadedFile" given
以下是代码:
/**
* @ORM\Entity
* @ORM\Table(name="symfony_demo_user")
* @Vich\Uploadable
*/
class User extends BaseUser implements UserInterface
{
/**
* @Vich\UploadableField(mapping="avatar_image", fileNameProperty="avatarName")
*
* @var File
*/
private $avatarFile;
/**
* @ORM\Column(type="string", length=255, nullable=true, options={"default": 0})
*
* @var string
*/
private $avatarName;
/**
* @ORM\Column(type="datetime")
*
* @var \DateTime
*/
private $updatedAt;
/**
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image
*
* @return User
*/
public function setAvatarFile(File $image = null)
{
$this->avatarFile = $image;
if ($image) {
// It is required that at least one field changes if you are using doctrine
// otherwise the event listeners won't be called and the file is lost
$this->updatedAt = new \DateTime('now');
}
return $this;
}
/**
* @return File
*/
public function getAvatarFile()
{
return $this->avatarFile;
}
我的表格:
use Symfony\Component\Form\AbstractType;
use Symfony\Component\Form\FormBuilderInterface;
use Vich\UploaderBundle\Form\Type\VichImageType;
class ProfileFormType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
# no translation_domain means - app translations from ~/app/translations/
$builder
->add('avatarFile', 'vich_image');
}
你知道问题出在哪里吗?
答案 0 :(得分:15)
您在方法setAvatarFile
中说您正在等待课程File
的项目。您没有设置任何用于命名此类的任何用途,因此它会查找类AppBundle\Entity\File
在文件顶部添加use Symfony\Component\HttpFoundation\File\File
。