2016-03-02 72 views
3

我正在使用VichUploader在symfony项目中上传文件。在配置上,我使用(从文件复制):Symfony VichUploaderBundle:无法生成文件名

service: vich_uploader.namer_property 
options: { property: 'slug'} 

在我的实体我产生蛞蝓与Gedmo/Sluggable自动:

/** 
* @Gedmo\Slug(fields={"title"}, updatable=false) 
* @ORM\Column(type="string", length=100, nullable=false) 
*/ 
protected $slug; 

但试图挽救我得到以下错误的实体时500 :

无法生成文件名:属性slug为空。

如果我将该属性设置为'标题'它的作品。我忘了一个配置参数或其他东西,让它与Gedmo slug一起工作?

+0

我想原因是两个bundle都使用'flush'事件来o perate和正在执行的顺序错误... –

+0

但有机会配置吗? – Nicki

+1

@Nicki你有没有发现如何做?我刚刚得到同样的问题 - 我改变了vich_uploader.namer_uniqid的名字作为快速修复,但这不是我想要的。 –

回答

0

默认情况下,原则扩展包不附加任何监听器: http://symfony.com/doc/current/bundles/StofDoctrineExtensionsBundle/index.html#activate-the-extensions-you-want

应配置得到sluggable工作:

stof_doctrine_extensions: 
    orm: 
     default: 
      sluggable: true 
+0

生成了slu but,但似乎它是在VichUploader尝试访问它之后生成的。 – Nicki

+0

@Nicki,你在config.yml中有上面的配置吗? – malcolm

+0

不是确切的配置,因为我没有StofBundle安装Gedmo。但是监听器已配置并生成了slu gs声。 – Nicki

-1

好,解决你的错误500的问题,它是只需要在你的实体中创建一个公共函数getSlug():

public function getSlug() 
{ 
    // Or a slug function of return 
    return uniqid().'_file_test'; 
}