Symfony / VichUploaderBundle: DirectoryNamer

Я пытаюсь реализовать DirectoryNamer, но, к сожалению, это приводит к сообщению об ошибке, и я не знаю, что делать дальше.

Контролер (отрывок):

if ($form->isSubmitted() && $form->isValid()) {

$em = $this->getDoctrine()->getManager();
$em->persist($image);
$em->flush();
//...
}

Класс обслуживания DirectoryNamer:

use Vich\UploaderBundle\Naming\DirectoryNamerInterface;

class ArtistDirectoryNamer implements DirectoryNamerInterface
{
public function directoryName($image, PropertyMapping $mapping) {
return $image->getArtist()->getId();
}
}

Конфигурация VichUploader:

vich_uploader:
db_driver: orm
mappings:
upload_artists:
uri_prefix:         /upload/artists
upload_destination: %kernel.root_dir%/../web/upload/artists
directory_namer:    macms_admin.artist_directory_namer
namer:              vich_uploader.namer_uniqid
inject_on_load:     false
delete_on_update:   true
delete_on_remove:   true

… и получающееся сообщение об ошибке:

Ошибка компиляции: объявление ArtistDirectoryNamer :: directoryName () должно быть совместимо с Vich \ UploaderBundle \ Naming \ DirectoryNamerInterface :: directoryName ($ объект, Vich \ UploaderBundle \ Mapping \ PropertyMapping $ mapping)

Что не так с моим кодом? Пока я не реализовал DirectoryNamer, загрузка работала нормально, и файлы были сохранены в «/ upload / Artist».

Есть намеки? Заранее спасибо!

0

Решение

Может быть, вы забыли use заявление для Vich\UploaderBundle\Mapping\PropertyMapping учебный класс?

0

Другие решения

Благодаря K-Phoen — вот рабочее решение:

namespace Acme\Project\AdminBundle\Services;

use Vich\UploaderBundle\Naming\DirectoryNamerInterface;
use Vich\UploaderBundle\Mapping\PropertyMapping;

class ArtistDirectoryNamer implements DirectoryNamerInterface
{
public function directoryName($image, PropertyMapping $mapping) {
return $image->getArtist()->getId();
}
}
0

По вопросам рекламы [email protected]