FOSUserBundle 使用 MongoDB 配置验证而不是 ORM
FOSUserBundle use MongoDB config validation instead of ORM
我得到了一个带有 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
但是当我想使用我的用户 class 时,抛出一个错误,告诉 MongoDB 注释 classes 找不到。
Attempted to load class "Unique" from namespace
"\Symfony\Component\Validator\Constraints\Doctrine\Bundle\MongoDBBundle\Validator\Constraints".
Did you forget a "use" statement for another namespace?
这条消息似乎是由
抛出的
/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/validation/mongodb.xml
因为我不想使用 MongoDB 驱动程序,为什么 FOSUser 使用 MongoDB 验证器?
这似乎是 FOSUserBudle 中的错误。
作为一个肮脏的解决方法,我将行 <constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">
从 orm.xml
复制到 mongodb.xml
和 couchdb.xml
(全部在 /friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/validation/
中)。
显然,这些文件实际上已加载,但不应该加载。
编辑:实际上这是 FOSUserBundle 中的一个错误,在 1.3.6 版中已修复,参见 https://github.com/FriendsOfSymfony/FOSUserBundle/issues/1851#issuecomment-108411883
这是一个老问题,但是对于那些可能还没有得到这个错误的人来说:
检查您为重写和自定义 fosUserBundle 而制作的用户包。
太多的时间和大量的搜索,没有办法解决,在检查我自己的用户包之前!
只需删除新版本fos不需要的文件夹:
/Resources/config/validation
祝你好运。
我得到了一个带有 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
但是当我想使用我的用户 class 时,抛出一个错误,告诉 MongoDB 注释 classes 找不到。
Attempted to load class "Unique" from namespace "\Symfony\Component\Validator\Constraints\Doctrine\Bundle\MongoDBBundle\Validator\Constraints". Did you forget a "use" statement for another namespace?
这条消息似乎是由
抛出的/friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/validation/mongodb.xml
因为我不想使用 MongoDB 驱动程序,为什么 FOSUser 使用 MongoDB 验证器?
这似乎是 FOSUserBudle 中的错误。
作为一个肮脏的解决方法,我将行 <constraint name="Symfony\Bridge\Doctrine\Validator\Constraints\UniqueEntity">
从 orm.xml
复制到 mongodb.xml
和 couchdb.xml
(全部在 /friendsofsymfony/user-bundle/FOS/UserBundle/Resources/config/validation/
中)。
显然,这些文件实际上已加载,但不应该加载。
编辑:实际上这是 FOSUserBundle 中的一个错误,在 1.3.6 版中已修复,参见 https://github.com/FriendsOfSymfony/FOSUserBundle/issues/1851#issuecomment-108411883
这是一个老问题,但是对于那些可能还没有得到这个错误的人来说:
检查您为重写和自定义 fosUserBundle 而制作的用户包。
太多的时间和大量的搜索,没有办法解决,在检查我自己的用户包之前!
只需删除新版本fos不需要的文件夹:
/Resources/config/validation
祝你好运。