Сервисный контейнер symfony3.4 в шаблоне

Я определил службу в моем MainBundle / MainFunctions /, и в Controller я могу вызвать службу. Как теперь я могу получить сервисный контейнер в SYMFONY 3.4 в шаблоне? Прочитайте документы, что это больше не публично.

#view/template.html.php
<?php $shop_id = $this->container->get('main_functions')->getSessionShopId(); ?>

Мой config.yml

imports:
- { resource: parameters.yml }
- { resource: security.yml }
- { resource: services.yml }
- { resource: "@FrontendMainBundle/Resources/config/services.yml

мой FrontendMainBundle / Resources / config / services.yml

services:
_defaults:
public: true
frontend_locale.locale_listener:
class: Frontend\MainBundle\EventListener\LocaleListener
arguments: ["%kernel.default_locale%"]
tags:
- { name: kernel.event_subscriber }
main_functions:
public: true
class: "%main_functions_class.class%"arguments: ['@translator', '@doctrine.orm.entity_manager'....

Я прочитал документы, что это больше не публично. Но я не могу добраться до main_functions в шаблоне. Как?

СПАСИБО!!!

0

Решение

если вам нужен интеллект в вашем шаблоне, я советую вам использовать расширение ветки: https://symfony.com/doc/current/templating/twig_extension.html

это вы сможете позвонить {{yourFunction}}

это довольно просто.

0

Другие решения

Ответ от MatMouth — лучший способ взаимодействия с вашим сервисом из шаблона веточки. Вы можете создавать функции для каждого метода, к которому вам нужен доступ в шаблоне. Попытка добавить ваш объект как переменную ветки не является хорошей практикой, если только это не простые средства получения, как вы, например, используете с сущностями Doctrine.

Вот отличная документация по настройке новой функции и регистрации ее в службе контейнеров:

https://symfony.com/doc/3.2/templating/twig_extension.html

Вы также можете зарегистрировать фильтр вместо функции. Разница между ними заключается в синтаксисе функции someFunction(someVar) и фильтр someVar|someFilter, Если вам нужно добавить дополнительные аргументы в вашу функцию или фильтр, просто добавьте аргументы в ваш вызываемый объект.

Вот некоторая документация от Twig:

https://twig.symfony.com/doc/2.x/advanced.html

Вы можете делать классные вещи, такие как обеспечение безопасности HTML, внедрение среды веток и т. Д.

Удачи и счастливого кодирования!

0

По вопросам рекламы [email protected]