2015-01-07 1 views
4

Недавно я решил взглянуть на Силиуса, так как мне нравится идея, благоприятная для разработчиков, проект Symfony2.Правильный dev. подход для переопределения шаблонов Twig

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

+0

Вы должны распространяться только любые из пучков Sylius в особых случаях, например, при добавлении компилятора проходить. – gvf

ответ

1

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

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