FOSUserBundle使用MongoDB配置验证而不是ORM

时间:2015-05-18 13:30:36

标签: mongodb symfony orm fosuserbundle sonata-user-bundle

我有一个带有FOSUserBundle和SonataUserBundle的Symfony2项目。两个捆绑包都配置为仅使用ORM。

# FOS User Bundle
fos_user:
    db_driver: orm
    firewall_name: main
    user_class: MyBundle\Entity\User
    group:
        group_class: MyBundle\Entity\Group
    from_email:
        address: foo@bar.com
        sender_name: Foo Bar

# SONATA User Bundle
sonata_user:
    security_acl: false
    manager_type: orm
    class:
        user: MyBundle\Entity\User
        group: MyBundle\Entity\Group
    impersonating:
        route: homepage
    admin:
        user:
            class: MyBundle\Admin\UserAdmin
            controller: SonataAdminBundle:CRUD
            translation: SonataUserBundle

但是当我想使用我的User类时,会抛出一个错误,告诉我无法找到MongoDB注释类。

  

尝试从命名空间加载类“Unique”   “\的Symfony \分量\验证\约束\原则\包\ MongoDBBundle \验证\约束”。   您是否忘记了另一个命名空间的“use”语句?

此消息似乎是由

引发的
  

/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/validation/mongodb.xml

由于我不想使用MongoDB驱动程序,为什么FOSUser使用MongoDB验证器?

2 个答案:

答案 0 :(得分:4)

这似乎是FOSUserBudle中的一个错误。

作为一种肮脏的解决方法,我将行<constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">orm.xml复制到mongodb.xmlcouchdb.xml(全部都在/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/validation/中)。

显然,这些文件实际上是加载的,但不应该加载。

编辑:事实上这是FOSUserBundle中的一个错误,并在1.3.6版中得到修复,请参阅https://github.com/FriendsOfSymfony/FOSUserBundle/issues/1851#issuecomment-108411883

答案 1 :(得分:0)

这是一个老问题,但对于那些可能会收到此错误的人:

检查您自己用于重写的用户包并自定义fosUserBundle。

在检查我自己的用户包之前,有太多的时间和大量的搜索,无法解决!

只需删除新版fos中不需要的文件夹:

.nextVal
祝你好运。