HiNeX
@HiNeX
Web Developer

Symfony2: Как использовать доктрину в DependencyInjection Extension?

При инициализации бандла в файле DependencyInjection/SeamplebundleExtension.php дергается его конфигурация. В этот момент я добавляю туда определенный параметр. Значение этого параметра необходимо брать из бд. Но не могу дернуть доктрину или сам entity. Какие есть идеи?
  • Вопрос задан
  • 2315 просмотров
Решения вопроса 2
keltanas
@keltanas
Software Developer
Roman Hinex чувак, прочитай для начала документацию на контейнер, а конкретно symfony.com/doc/current/components/dependency_inje... и symfony.com/doc/current/components/dependency_inje... , а потом подумай, как то, что ты хочешь вяжется с тем, что прочитаешь?
Твой вопрос всего лишь от незнания матчасти.

Подскажу, во время компиляции контейнера в нем все сервисы представлены в виде объектов типа Definition, это объекты, содержащие конфигурацию, по которой сервис должен будет создан в будущем, после того, как контейнер будет уже откомпилирован. Пока компиляция не закончена, ты понятия не имеешь, как может быть любой из сервисов изменен последующими пассами.
Экстеншен вообще оперирует только в области своего бандла чистой копией контейнера, который знает только о сервисах бандла и ничего не знает о других бандлах. Единственная задача экстеншена - собрать конфиг бандла. Мержинг конфигов происходит уже во время компиляции.
Но и тогда сервисы представлены только в виде Definition и не могут быть инстанцированы, т.к. другие пассы могут их менять (и корректировать параметры в том числе).

Затем напиши отдельный сервис для работы с динамической конфигурацией и пользуйся им.
Ответ написан
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
забирать значение в рантайме из БД и кешировать либо попробовать написать CompilePass и там уже дергать доктрину. Хотя это не ок как по мне так как возможны проблемы да и не вижу смысла.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы