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

Однако в настоящее время Силиус, похоже, еще не «приспособлен» к такому подходу, если только я что-то не упустил.

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


person Redoubt    schedule 07.01.2015    source источник
comment
Вы должны расширять любой из пакетов Sylius только в очень специфических случаях, таких как добавление прохода компилятора.   -  person gvf    schedule 23.06.2015


Ответы (1)


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

app/Resources/SyliusWebBundle/views/Frontend/Checkout/Step/
   security.html.twig
   addressing.html.twig
   shipping.html.twig
   payment.html.twig
   finalize.html.twig
person wodka    schedule 07.04.2015