Symfony Конфигурация бандлов в "рантайме"

Kot999

Новичок
Приветствую! Уважаемые знатоки, вопрос от телезрителя из Одессы.
С Symfony знаком "без года - неделю".
Есть некое приложение на Symfony 2.8 которое нуждается в конфигурации некоторых бандлов на лету (мультидоменное приложение, и конфигурация должна подтягиваться в зависимости от домена, на котором оно запущено) так же нужно избежать кэширования всего, что связано с этой конфигурацией.
Как я это вижу: создать сервис который управляет некоторыми настройками и возвращает их по вызову некоторого метода. и это отчасти работает, когда я хочу эти настройки передать в другой сервис, в конфигурации
services:
....
app.service.myConfigService:
class AppBundle\Services\MyConfigService
sayNameService:
name: "@=service('app.service.myConfigService').getName()"
....

тут это срабатывает, в name передается значение возвращаемое вызовом метода getName() моего сервиса.

Однако когда пытаюсь конфигурировать Бандлы, то это не прокатывает (бандлы нужно конфигурировать разные, поэтому " а что если сделать такой-то костыль для twig" не прокатит)

....
twig:
globals:
name: "@=service('app.service.myConfigService').getName()"
#name: "@app.service.myConfigService.getName()" такой вариант тоже не работает
....
ServiceNotFoundException in CheckExceptionOnInvalidReferenceBehaviorPass.php line 58:The service "twig" has a dependency on a non-existent service "=service('app.service.myConfigService').getname()".

Вероятно сервис в этот момент еще не существует.
Внимание, вопрос: Каким образом добиться конфигурации разных бандлов "на лету" через сервис.
 

A1x

Новичок
зачем обязательно сервис? Я у себя просто в config.yml вместо parameters.yml подключаю parameters.php и там могу задавать разные параметры в зависимости от каких-то условий

Код:
imports:
    - { resource: parameters.php }
    - { resource: security.yml }
    - { resource: services.yml }
 

Kot999

Новичок
поначалу я тоже так думал, но нет. Все что ты сделаешь динамически в config.php прекрасно "скомпиллится" в статический кэш. и все вызовы в parameters.php заменятся на результаты вызовов в сбидженном контейнере.
 

A1x

Новичок
не весь config.php а только параметры в parameters.php. Все нормально работает
Хотя не очень понял что именно ты хочешь получить
 
Последнее редактирование:

Kot999

Новичок
ну вот попробуй с помощью config.php передать в twig.globals.currenttime значение, которое будет браться из вызова метода какого-то сервиса, и возвращать просто time() запусти, и выведи в шаблоне {{currenttime}} думаю поймешь, что я имею в виду.
 

Koc

Новичок
поначалу я тоже так думал, но нет. Все что ты сделаешь динамически в config.php прекрасно "скомпиллится" в статический кэш. и все вызовы в parameters.php заменятся на результаты вызовов в сбидженном контейнере.
Так а если сделать под каждый сайт свой кеш (перегрузить `Kernel::getCacheDir()`)? и при смене конфигурации - удалять файл, со скомпилированным контейнером.
 

Kot999

Новичок
Так а если сделать под каждый сайт свой кеш (перегрузить `Kernel::getCacheDir()`)? и при смене конфигурации - удалять файл, со скомпилированным контейнером.
Так и пришлось сделать, на данный момент. только конфигурация не удаляется, а подгружается конфиг из папки соответствующей домену. (удаляется только в случае когда надо обновить кэш) а конфиг-файлы собираются "в рантайме" при первом запросе.
 
Сверху