Я имею затруднение при конфигурировании Doctrine Extension Taggable представлена здесь: https://github.com/FabienPennequin/DoctrineExtensions-TaggableНастройка DoctrineExtensions-Taggable в Symfony fullstack с config.yml
Мой проект использует Symfony 2 Fullstack и моя конфигурация использует YAML в то время как мои доктрины сущности являются используя аннотацию. Я установил DoctrineExtensions с помощью композитора. Добавляем «fpn/doctrine-extensions-taggable»: «dev-master» в раздел require на composer.json, а затем запускаем composer update
. Это установлено без проблем.
Я тогда потерялись в этом разделе: https://github.com/FabienPennequin/DoctrineExtensions-Taggable#setup-doctrine
Я понимаю, что метаданные Доктрина Entity, однако, как уже упоминалось ранее, я использую YAML для моей конфигурации симфони, а также менеджеров сущностей. Вот выдержка из моего файла config.yml:
# Doctrine Configuration
doctrine:
dbal:
default_connection: default
connections:
default:
driver: "%database_driver%"
host: "%database_host%"
port: "%database_port%"
dbname: "%database_name%"
user: "%database_user%"
password: "%database_password%"
charset: UTF8
orm:
default_entity_manager: main
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
main:
connection: default
mappings:
VendorMainBundle:
prefix: Vendor\MainBundle\Entity
taggable:
connection: default
mappings:
taggable:
type: xml
prefix: DoctrineExtensions\Taggable\Entity
dir: %kernel.root_dir%/../vendor/fpn/doctrine-extensions-taggable/metadata
Однако, когда я бегу php app/console doctrine:mapping:info --em=taggable
я получаю ошибку:
[Exception]
You do not have any mapped Doctrine ORM entities according to the current configuration. If you have entities or mapping files you should check your mapping configuration for errors.
Если вышеприведенная команда показать сопоставления, описанные в xml files? Это позволяет мне обновлять схему в базе данных?
Я использовал этот documenation в качестве ссылки для файла config.yml: http://symfony.com/doc/current/reference/configuration/doctrine.html#mapping-configuration
Я также добавил это под config.yml для того, чтобы настроить TagListener. Это верно?
services:
taggable:
class: DoctrineExtensions\Taggable\TagListener
РЕДАКТИРОВАТЬ [@ Grimv01k]: TagListener требует передачи аргумента, который является экземпляром объекта TagManager. Я создал другую службу для обработки, что, как следует и передал его TagListener:
tag.manager:
class: DoctrineExtensions\Taggable\TagManager
tags:
- { name: doctrine.event_subscriber, connection: default }
arguments:
entity.manager: @doctrine.orm.entity_manager
taggable:
class: DoctrineExtensions\Taggable\TagListener
arguments:
manager: @tag.manager
TagManager требует аргумент в EntityManager, однако при этом приводит к ошибке:
[Symfony\Component\DependencyInjection\Exception\ServiceCircularReferenceException]
Circular reference detected for service "doctrine.dbal.default_connection", path: "doctrine.dbal.default_connection".
Через сеть это рекомендуется разрешить эту ошибку, передав @service_container, а в конструкторе объекта вытащите entity_manager, однако, будучи поставщиком, я бы предпочел не изменять их код. Есть ли другой способ?
Что вы используете? Php app/console doctrine: mapping: info', без указания '-em'? – Nevertheless
В нем будут перечислены все объекты, определенные в MainBundle. Они определены в пакете под папкой Entity, используя Annoation. – RDM
Нашли что-нибудь, что может дать вам идею: http://stackoverflow.com/questions/17493779/symfony-exception-when-registering-new-doctrine-event-subscriber-softdeleteable – Nevertheless