Я разрабатываю плагин для платформы электронной коммерции Sylius. Я использую Symfony 4 со стандартом Sylius 1.2. В этом плагине (который является просто пакетом Symfony) я хотел бы переопределить шаблон, определенный в SyliusAdminBundle, и я бы не хотел копировать его в папку представлений AppBundle.
Я попытался следовать объяснениям, приведенным здесь: Заменить шаблон пакета из другого пакета в symfony 3.4 / 4
но я не могу понять, как заставить его работать!
У вас есть идеи, как я могу обработать?
@DominicWehrmann, нет, это не тот вопрос. Я хочу переопределить шаблон в стороннем пакете, а не в проекте AppBundle
Я сомневаюсь, что это возможно. Как насчет того, чтобы разветвить другой проект и внести изменения?
Я бы хотел избежать разветвления проекта Sylius. В любом случае, если это невозможно, я воспользуюсь другим подходом. Спасибо за вашу заботу
Хм, я снова подумал об этом. Вы можете попробовать поместить свой «новый» шаблон в папку ресурсов стороннего пакета, как указано в моей первой ссылке, это работает?
@DominicWehrmann, нет, это не работает, даже если использовать пространство имен веточек




Я думаю, вы сможете либо поместить замещающий шаблон в templates/bundles/SyliusAdminBundle/path/to/template.html.twig. То же самое можно сделать из темы: app/themes/ThemeName/SyliusAdminBundle/path/to/template.html.twig. Часто плагины просто дают инструкции по внесению изменений в ваш проект. Он не самый гибкий, но для проекта очень понятно, какие шаблоны были изменены.
Для получения дополнительной информации: https://docs.sylius.com/en/1.2/customization/template.html.
Раньше в Symfony был механизм «наследования пакетов», чтобы делать то, что вы изначально планировали, но эта функция устарела с версии 3.4: https://symfony.com/blog/new-in-symfony-3-4-deprecated-bundle-inheritance.
«Часто плагины просто дают инструкции по внесению корректировок в ваш проект. Это не самый гибкий вариант, но для проекта очень ясно, какие шаблоны были изменены». На самом деле я часто видел, как плагин дает подобные инструкции, но я хотел избежать этого.