2016-03-02 3 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 is empty.

Если я задал свойство «title», он работает. Я забыл параметр конфигурации или что-то еще, чтобы заставить его работать с Gedmo slug?

+0

Я думаю, причина в том, что оба пакета используют событие 'flush' для o perate и выполняются в неправильном порядке ... –

+0

Но есть ли шансы настроить это? – Nicki

+1

@ Ники вы нашли, как это сделать? Я просто получил ту же проблему - я изменил namer для 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

Слиток генерируется, но кажется, что он создается после того, как VichUploader пытается получить к нему доступ. – Nicki

+0

@ Ники, и у вас есть конфигурация выше в вашем 'config.yml'? – malcolm

+0

Не точная конфигурация, так как я установил Gedmo без StofBundle. Но слушатель настроен и генерируются слизняки. – Nicki

-1

Ok, чтобы решить вашу проблему ошибки 500, то есть просто необходимо создать публичную функцию getSlug() в вашей организации:

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