Как я могу использовать Symfony Webpack Encore TagRenderer и EntrypointLookup без Twig

Я добавляю Symfony Webpack Encore в существующий проект с собственными php шаблонами, поэтому без использования Twig. Рефакторинг всего проекта в Twig сейчас не стоит усилий.

Следующий код Twig предлагается в документации Webpack Encore для рендеринга тегов JS script и тегов CSS link.

 {% block stylesheets %}
     {{ encore_entry_link_tags('app') }}
 {% endblock %}
 {% block javascripts %}
     {{ encore_entry_script_tags('app') }}
 {% endblock %}

Поэтому я хотел бы реализовать тот же код без использования Twig. Эти функции Twig используют классы TagRenderer и EntrypointLookup. Как я могу инициировать необходимые модели и имитировать функциональность функций Twig?


person i.amniels    schedule 11.07.2019    source источник


Ответы (1)


Если у вас есть доступ к службе в вашем PHP файле, то это PHP код, стоящий за функциями twig:

$service = $container->get('webpack_encore.tag_renderer');

encore_entry_link_tags

$service->renderWebpackLinkTags($entryName, $packageName, $entrypointName);

encore_entry_script_tags

$service->renderWebpackScriptTags($entryName, $packageName, $entrypointName);

Аргументы, которые вы должны передать (с конфигурацией по умолчанию)

  • $entryName = 'app'
  • $packageName = null
  • $entrypointName = '_default';
person DarkBee    schedule 11.07.2019
comment
Спасибо, как мне найти услугу? Что я должен искать? - person i.amniels; 11.07.2019
comment
Я предполагаю, что вам нужно сделать $this->container->get('service.name') в контроллере (symfony) и передать это в ваш php шаблон - person DarkBee; 11.07.2019
comment
Это приводит к следующей ошибке: Невозможно автоматически подключить аргумент $ tagRenderer для App \ Controller \ HomeController :: index (): он ссылается на класс Symfony \ WebpackEncoreBundle \ Asset \ TagRenderer, но такой службы не существует. Возможно, вам следует присвоить этому классу псевдоним существующей службы webpack_encore.tag_renderer. - Как установить эту службу или присвоить ей псевдоним? - person user3714751; 09.06.2020
comment
Не уверен, почему вы проголосовали против, если вы даже не регистрировали сервис со своей стороны - person DarkBee; 09.06.2020