- PVSM.RU - https://www.pvsm.ru -
Я сейчас занимаюсь написанием API для front-end на AngularJS. Для этого я использую стандартную связку для Symfony:
У меня появилась задача отдавать ссылки на thumb и preview в объектах которые содержат картинки. Я уже использовал в коде LiipImagineBundle [4] и для генерации ссылок в api тоже хотел использовать данный bundle. Проведя некий поиск нужного мне решения я удивился что нет никаких готовых bundlов для этого.
Сразу хочу сказать что я явно не фанат JMSSerializerBundle, так как проект активно не поддерживается что дает некие ограничения при работе с ним + он написан не совсем с учетом производительности. Symfony Serializer будет по лучше, но жизнь и не все так просто)
Также прошу заметить что API планируется быть открытым и ссылки на thumb должны быть присланы в ответе. Просто написать в доке используйте url http://example.com/resolver/filter/image/name.jpg [5] для получения thumb не подходит, да и не красиво как то)
Вернемся к теме. Поняв что нужно писать свой велосипед я приступил к его написанию. Так как проект для которого он был нужен не маленький пришлось делать так что б поддерживалась разная конфигурация. К примеру у картинки может быть несколько фильтров а может и не быть. Так как я использую для загрузки всего на сервер VichUploaderBundle [6], то пришлось сделать генерацию ссылок с учетом того что сериализуемое поле может быть полем этого bundle.
В JMSSerializerBundle есть два события которые вызываются при сериализации объект serializer.pre_serialize и serializer.post_serialize которые я использовал.
Документация по использованию bundla и сам bundle находятся на GitHub LiipImagineSerializationBundle [7].
Автор: Bukashk0zzz
Источник [8]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/php-2/114690
Ссылки в тексте:
[1] FOSRestBundle: https://github.com/FriendsOfSymfony/FOSRestBundle
[2] JMSSerializerBundle: https://github.com/schmittjoh/JMSSerializerBundle
[3] NelmioApiDocBundle: https://github.com/nelmio/NelmioApiDocBundle
[4] LiipImagineBundle: https://github.com/liip/LiipImagineBundle
[5] http://example.com/resolver/filter/image/name.jpg: http://example.com/resolver/filter/image/name.jpg
[6] VichUploaderBundle: https://github.com/dustin10/VichUploaderBundle
[7] LiipImagineSerializationBundle: https://github.com/Bukashk0zzz/LiipImagineSerializationBundle
[8] Источник: https://habrahabr.ru/post/279043/
Нажмите здесь для печати.