2017-08-17 201 views
1

我使用EasyAdminBundle进行实体管理并上传图像我想要使用VichUploaderBundleEasyAdminBundle和VichUploaderBundle - 错误:“”,“Symfony Component HttpFoundation File UploadedFile”的预期参数为

继文档配置捆绑: https://github.com/javiereguiluz/EasyAdminBundle/blob/master/Resources/doc/integration/vichuploaderbundle.rst

没有utilizo anotacionesyml POR老阙我guie EN埃斯特这份执行: https://github.com/dustin10/VichUploaderBundle/blob/master/Resources/doc/mapping/yaml.md

我的代码如下所示:

//app/config/config.yml 
vich_uploader: 
db_driver: orm 
mappings: 
    torneo_images: 
     uri_prefix:   '%app.path.torneo_images%' 
     upload_destination: '%kernel.root_dir%/../web/uploads/images/torneos' 

.......... 
easy_admin: 
form: 
      fields: 
       - logo 
       - { property: 'imageFile', type: 'file' } 

yml配置文件:

//BackendBundle/Resources/config/doctrine/Torneos.orm.yml 
...... 
    logo: 
     type: string 
     nullable: true 
     length: 255 
     options: 
      fixed: false 
    imageFile: 
     mapping: torneo_images 
     filename_property: logo 

添加到实体

//BackendBundle/Entity/Torneos.orm.yml 
use Doctrine\ORM\Mapping as ORM; 

use Symfony\Component\HttpFoundation\File\File; 
use Symfony\Component\Validator\Constraints as Assert; 
use Vich\UploaderBundle\Mapping\PropertyMapping as Vich; 

namespace BackendBundle\Entity; 
....... 
/** 
* @var string 
*/ 
private $logo; 
/** 
* @var File 
*/ 
private $imageFile; 
....... 
/** 
* Set logo 
* 
* @param string $logo 
* 
* @return Torneos 
*/ 
public function setLogo($logo) 
{ 
    $this->logo = $logo; 

    return $this; 
} 

/** 
* Get logo 
* 
* @return string 
*/ 
public function getLogo() 
{ 
    return $this->logo; 
} 

/** 
* If manually uploading a file (i.e. not using Symfony Form) ensure an instance 
* of 'UploadedFile' is injected into this setter to trigger the update. If this 
* bundle's configuration parameter 'inject_on_load' is set to 'true' this setter 
* must be able to accept an instance of 'File' as the bundle will inject one here 
* during Doctrine hydration. 
* 
* @param File|\Symfony\Component\HttpFoundation\File\UploadedFile $image 
* 
* @return Torneos 
*/ 
public function setImageFile(File $logo = null) 
{ 
    $this->imageFile = $logo; 

    // VERY IMPORTANT: 
    // 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 
    //if ($image) { 
     // if 'updatedAt' is not defined in your entity, use another property 
    // $this->updatedAt = new \DateTime('now'); 
    //} 
    return $this; 
} 

/** 
* @return File|null 
*/ 
public function getImageFile() 
{ 
    return $this->imageFile; 
} 

而且添加该代码(我不知道这是否是正确的)

//BackendBundle/Resources/config/vich_uploader/Torneos.orm.yml 
BackendBundle\Entity\Torneos: 
imageFile: 
    mapping: torneo_images 
    filename_property: logo 

任何人都可以给我一些想法解决它?

回答

0

该解决方案非常简单。 发生错误是因为use放置在控制器中的namespace之前。

namespace BackendBundle\Entity; 

问候

相关问题