在Symfony2.3.​​4和ODM中得到JMSSerializerBundle的错误

时间:2013-09-01 03:28:12

标签: doctrine-odm symfony-2.3 jmsserializerbundle

错误是ServiceNotFoundException:服务“jms_serializer.metadata_driver”依赖于不存在的服务“doctrine”。

我在composer.json中的配置:

“jms / serializer-bundle”:“dev-master”, “jms / di-extra-bundle”:“dev-master”

出了什么问题?

1 个答案:

答案 0 :(得分:1)

您是否将默认对象构造函数别名为DoctrineObjectConstructor? E.g。

jms_serializer.object_constructor:
    alias: jms_serializer.doctrine_object_constructor

如果你是,DoctrineObjectConstructor似乎假定使用Doctrine的ORM解决方案,而不是像MongoDB那样的ODM解决方案。另一位用户评论了DoctrineObjectConstructor与MongoDB here的使用情况。

总之,您需要使用DoctrineObjectConstructor而不是doctrine_mongodb重新定义doctrine,例如:

jms_serializer.doctrine_object_constructor:
    class:        %jms_serializer.doctrine_object_constructor.class%
    public:       false
    arguments:    ["@doctrine_mongodb", "@jms_serializer.unserialize_object_constructor"]

即使问题与DoctrineObjectConstructor没有明确相关,您也可能会发现上述解决方案可以转换为服务或对象,从而导致配置出现问题。