Почему мой прослушиватель обновления файлов не работает как variant_image в проекте sylius?

В своем проекте я использую автономную версию SyliusResourceBundle (0.9). Я без проблем могу управлять своими сущностями: пользователем, группой, ролью и компанией.

Я попытался использовать Gaufrette\Filesystem, чтобы добавить логотип компании (например, variant_image в sylius). И кажется, что мой сервис не работает. Он пытается сохранить изображение без его загрузки, и у меня нет сообщения об ошибке от моего слушателя!

Конфигурация KNP Gaufrette в config.yml:

knp_gaufrette:
    adapters:
        project_file:
            local:
                directory:  %kernel.root_dir%/../web/media/file
                create:     true
    filesystems:
        project_file:
            adapter: project_file

ProjectCoreBundle\Resources\Config\services.yml:

#in ProjectCoreBundle\Resources\Config\services.yml
# Listener
project.listener.image_upload:
    class: %project.listener.image_upload.class%
    arguments: ['@project.image_uploader']
    tag:
        - { name: kernel.event_listener, event: project.company.pre_create, method: uploadCompanyLogo }
        - { name: kernel.event_listener, event: project.company.pre_update, method: uploadCompanyLogo }

# Other
project.image_uploader:
    class: %project.image_uploader.class%
    factory_class: Gaufrette\Filesystem
    factory_service: knp_gaufrette.filesystem_map
    factory_method: get
    arguments: [project_file]

Мой ImageUploadListener:

<?php

namespace Project\CoreBundle\EventListener;

use Project\CompanyBundle\Entity\CompanyInterface;
use Project\CoreBundle\Uploader\ImageUploaderInterface;
use Symfony\Component\EventDispatcher\GenericEvent;

class ImageUploadListener
{
    protected $uploader;

    public function __construct(ImageUploaderInterface $uploader)
    {
        $this->uploader = $uploader;
    }

    public function uploadCompanyLogo(GenericEvent $event)
    {
        $subject = $event->getSubject();

        if (!$subject instanceof CompanyInterface) {
            throw new UnexpectedTypeException(
                $subject,
            'Project\CompanyBundle\CompanyInterface');
        }

        $logo = $subject->getLogo();

        if ($logo->hasFile()) {
            $this->uploader->upload($logo);
        }
    }
}

Когда я отправляю свою форму с изображением, я получаю это сообщение:

An exception occurred while executing 'INSERT INTO syn_image (path, createdAt, updatedAt) VALUES (?, ?, ?)' with params [null, "2014-05-23 18:13:13", "2014-05-23 18:13:13"]:
SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'path' cannot be null

Я чувствую, что моя служба не срабатывает. Кто-нибудь может помочь мне с этой проблемой?

Спасибо :)


person Khyor    schedule 23.05.2014    source источник


Ответы (1)


Похоже, что функция загрузки изображений все еще находится в разработке. Я заметил, что загрузчик изображений не работает, когда уже есть изображение, являющееся частью коллекции, как это сделал человек, создавший эту проблему на github: проблема №356. Здесь обсуждается, что можно сделать/какие инструменты можно использовать для разработки лучшего загрузчика: ссылка.

person sabliao    schedule 02.07.2014