Как обрабатывать загрузку файлов с помощью 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, но вы можете извлечь код в свое приложение.