4

我在 Symfony 2.1 中有一个项目,带有 PropelBundle 和 FOS UserBundle。我使用 Composer 将 FOS UserBundle 从 1.2 升级到最新版本 (2.0) 并按照说明删除 app/config/config.yml 文件中的“propel_user_class”定义,如Upgrade.md 文件中所示。我的新配置如下:

# FOSUserBundle Configuration
fos_user:
    db_driver: propel
    firewall_name: main
    user_class: MyVendor\MyBundle\Model\Member
    registration:
        form:
            type: myvendor_user_registration

这样做并重建模型后,我在提交用户登录表单时收到以下错误:“用户提供程序必须返回一个 UserInterface 对象。”

我认为 FOS UserBundle 存在问题,无法识别我的用户类“成员”及其属性。在 FOS/UserBundle 的早期版本(1.2)中,FOS\UserBundle\Model\UserInterface 是由代理对象实现的,因此我之前的配置(正在运行)包括以下内容:

user_class: MyVendor\MyBundle\FOSUserBundle\Propel\UserProxy
propel_user_class: MyVendor\MyBundle\Model\Member

我的 UserProxy.php 文件用于扩展 FOS\UserBundle\Propel\UserProxy 并添加特定于我的项目的属性。新的 UserBundle 版本不再需要 UserProxy.php 了吗?我还需要做什么才能使新的 UserBundle 版本正常工作?上面提到的 Upgrade.md 文件还谈到了配置文件表单不再将用户包装在 CheckPassword 类中,并且不再由 User 类完成令牌的生成。但是,我不确定是否必须因此而进行任何更改?谁能给我一些指导方针?

我尝试将我的 Member、Circle 和 MemberCircle 类定义架构移动到 app/Resources/FOSUserBundle/config/propel/schema.xml 以覆盖 FOS 用户包中的架构,如文档中所示,同时告诉我自己的包中的类扩展 FOS UserBundle 中的那些,但在尝试使用“app/console propel:build”构建推进模型时出现以下错误:

[RuntimeException]
“MyProjectName/app/Resources/FOSUserBundle/config/propel/schema.xml”资源被“MyBundle”派生包中的资源隐藏。创建一个“MyProjectName/app/Resources/MyBundle/config/propel/schema.xml”文件来覆盖捆绑资源。

我在 app/Resources/FOSUserBundle/config/propel/schema.xml 文件中保留了命名空间“FOS\UserBundle\Propel”。如何使该架构覆盖 FOS/UserBundle 中的架构?我可以在其中使用名为“Member”(用于用户)和“Circle”(用于组)的类吗?

4

0 回答 0