Я создал пакет, который устанавливается с помощью композитора, с объектами в этой структуре папок:
Components\Product\Entity\Product.php
Components\Category\Entity\Category.php
...
Поэтому при установке пакета я бы отредактировал файл конфигурации моего приложения, чтобы добавить правильное сопоставление, например, так:
doctrine:
orm:
mappings:
type: annotation
dir: "%kernel.project_dir%/vendor/my-custom/bundle/Components/Product/Entity"
prefix: 'My\Custom\Bundle'
alias: MyCustomBundle
И это для каждой папки.
Таким образом, при установке пакета требуется много дополнительных настроек, чтобы добавить сопоставления для всех этих сущностей.
Можно ли определить эти сопоставления внутри пакета? Предпочтительно с помощью слушателя или что-то в этом роде?
На самом деле я пытаюсь добиться того, чтобы сущности могли быть определены в приложении следующим образом:
my_bundle:
entities:
product_entity: App\Entity\Product
category_entity: App\Entity\Category
И если вы их не определите, будут использоваться объекты по умолчанию из пакета (так что product_entity будет Components\Category\Entity\Product)
Итак, что я хочу сделать, это прокрутить все эти сущности и вручную сопоставить их, проще говоря, я хочу иметь возможность сделать это:
$doctrine->mapEntity(
$parameterBag->get('product_entity')
);
Надеюсь, это имеет смысл! :-)




Вы можете создать обработчик событий с событием доктрины loadClassMetadata. https://www.doctrine-project.org/projects/doctrine-orm/en/2.6/reference/events.html#lifecycle-events
Получить пакеты: Параметр 'kernel.bundles_metadata' в контейнере
Спасибо! Событие loadClassMetadata заставило меня двигаться в правильном направлении!