Как обрабатывать загрузку файлов с помощью SyliusResourceBundle

Мне интересно, как я могу добавить file-uploadк моему ресурсу. Я используюSyliusResourceBundle так что все контроллеры созданы для меня.

Маршрутизация:

app_product:
    resource: |
        alias: app.product
        except: ['show']
        section: admin
        grid: app_admin_product
        templates: Admin/Crud
        form: App\Form\Type\ProductType
    type: sylius.resource

ProductType это моя индивидуальная форма, и в ней есть FileType. Я могу это изменить, но проблема в том, как обрабатывать загрузку. Когда я смотрю на контроллер Силиуса, я вижу, что запускаются два события:

Sylius\Bundle\ResourceBundle\Controller\ResourceController:~191

$event = $this->eventDispatcher->dispatchPreEvent(ResourceActions::CREATE, $configuration, $newResource);

Я пробовал создать собственный EventListener расширение EventSubscriberInterface и я попытался зарегистрировать службу, которая специально слушает name: kernel.event_listener, event: sylius.product.pre_createно по какой-то причине этого не произойдет. И даже если это так!

Позволит ли мне изменить $newResource так выбранное изображение сохраняется в базе?

1 ответ

Силиус может сделать любой ресурсный объект изображениями. Однако вы можете использовать эту возможность для загрузки любых файлов, но без дополнительного кода для обработки других форматов ничего, кроме изображений, невозможно. Вот PR, целью которого было сделать эту возможность универсальной и охватить любые форматы: https://github.com/Sylius/Sylius/pull/9224 Он не был объединен из-за нескольких разрывов BC, но вы можете извлечь код в свое приложение.

Другие вопросы по тегам