Недавно я решил взглянуть на Sylius, так как мне нравится идея удобного для разработчиков проекта Symfony2.
Я пытался просмотреть различные статьи документации, но, похоже, не смог найти ответ на очень важный вопрос, который у меня возник: как рекомендуется начинать разработку нового интернет-магазина, который будет включать (как минимум) возможность реализации собственных HTML-шаблонов и возможность легкого обновления Sylius до будущих версий?
Лучший подход, который мне удалось придумать, — это создать новый пакет (в моем случае с именем WebBundle
), основанный на стандартном пакете SyliusWebBundle
. Вот в чем проблема. Чтобы получить минимум, позволяющий Sylius использовать шаблоны в моем комплекте, а не шаблон по умолчанию, мне пришлось пройти через множество обручей. Вот несколько вещей, которые я сделал до сих пор:
- Скопировано содержимое исходного каталога
Controller
изSyliusWebBundle
. Изменены возвращаемые значения, чтобы использоватьWebBundle
, а неSyliusWebBundle
часть строки в аргументе на$this->render()
, а также пространства имен классов. - Скопировал файлы YAML в каталоге
Resources/config/routing
изSyliusWebBundle
в мой пакет. ИзмененоSyliusWebBundle
ссылок в файлах YAML, как указано выше. Добавлены новые разделы в
app/config/config.yml
, в частности эта часть (предназначенная для переопределения содержимогоaddCheckoutSection()
вSylius\Bundle\CoreBundle\DependencyInjection\Configuration
):sylius_core: # ... checkout: steps: security: template: 'WebBundle:Frontend/Checkout/Step:security.html.twig' addressing: template: 'WebBundle:Frontend/Checkout/Step:addressing.html.twig' shipping: template: 'WebBundle:Frontend/Checkout/Step:shipping.html.twig' payment: template: 'WebBundle:Frontend/Checkout/Step:payment.html.twig' finalize: template: 'WebBundle:Frontend/Checkout/Step:finalize.html.twig'
У меня гораздо больше работы по изменению всех ссылок на контроллер по умолчанию в файлах YAML в каталоге Resources/config/routing/frontend
, но прежде чем я продолжу, мне нужно знать, правильный ли это подход, или я иду по неправильному пути. путь.
Моя цель — максимально упростить обновление магазина с помощью новых выпусков Sylius, поэтому я хотел бы не изменять файлы основной библиотеки, а вместо этого выборочно переопределять функциональность, используя мои собственные пакеты по мере необходимости.
Однако в настоящее время Силиус, похоже, еще не «приспособлен» к такому подходу, если только я что-то не упустил.
Тот факт, что мне пришлось переопределить функциональность из более чем одного пакета (CoreBundle
, а также WebBundle
, согласно приведенному выше разделу YAML), заставил меня приостановить мой текущий подход. Я надеюсь, что кто-то сможет направить меня в правильном направлении.