Недавно я решил взглянуть на Силиуса, так как мне нравится идея, благоприятная для разработчиков, проект 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), заставил меня приостановить мой текущий подход. Надеюсь, кто-то сможет направить меня в правильном направлении.
Вы должны распространяться только любые из пучков Sylius в особых случаях, например, при добавлении компилятора проходить. – gvf