Правильный дев. подход для переопределения шаблонов Twig

Недавно я решил взглянуть на 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, поэтому я бы хотел избежать изменения файлов базовой библиотеки и вместо этого выборочно переопределять функциональность, используя мои собственные пакеты, по мере необходимости.

Тем не менее, Sylius в настоящее время, кажется, еще не «ориентирован» на этот подход, если я что-то упустил.

Тот факт, что мне пришлось переопределить функциональность из более чем одного комплекта (CoreBundle так же как WebBundleВ соответствии с приведенным выше разделом YAML), я сделал паузу с моим текущим подходом. Я надеюсь, что кто-то сможет направить меня в правильном направлении.

4

Решение

Вы можете переопределить все шаблоны в папке приложения (это часть Symfony и работает со всеми пакетами):

app/Resources/SyliusWebBundle/views/Frontend/Checkout/Step/
security.html.twig
addressing.html.twig
shipping.html.twig
payment.html.twig
finalize.html.twig
1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]