#php #symfony #doctrine-orm #doctrine
#php #symfony #doctrine-orm #доктрина
Вопрос:
У меня есть пользовательский пакет, давайте назовем его FooBarBundle
.
Теперь, из пользовательского расширения, я хотел бы добавить следующее:
# Doctrine Configuration
doctrine:
orm:
mappings:
FooBarBundle : ~
Я убежден, что это не должно быть возможно, но я не могу найти никаких подтверждений того, что один пакет не может добавлять параметры конфигурации другого пакета.
Я не уверен, связано ли это: http://symfony.com/doc/current/bundles/prepend_extension.html
В идеале я хотел бы, чтобы несколько моих собственных пакетов добавляли свои собственные сопоставления Doctrine, а не полагались на обновление Config.yml при использовании каждого пакета.
Комментарии:
1. Компонент конфигурации Symfony позволяет вам определять файлы конфигурации в нескольких местах, чтобы это было возможно. Отчасти это зависит от того, как написано расширение doctrine. У меня возникнет соблазн поместить некоторые инструкции отладки в vendor / doctrine / doctrine-bundle и посмотреть, что произойдет. Немного скептически отношусь к ценности этого, но мне интересно посмотреть, работает ли это,
Ответ №1:
Да, вы можете сделать это для каждого пакета без обновления config.yml
файла:
namespace FooBarBundleDependencyInjection;
// ...
class FooBarExtension extends Extension implements PrependExtensionInterface
{
//...
public function prepend(ContainerBuilder $container)
{
$container->loadFromExtension('doctrine', array(
'orm' => array(
'mappings' => array(
'FooBarBundle' => null,
)
),
));
}
}
Если у вас много пакетов, каждая конфигурация будет объединена.