【问题标题】:Symfony FOSUserBundle Cannot instantiate abstract class FOS\UserBundle\Model\UserSymfony FOSUserBundle 无法实例化抽象类 FOS\UserBundle\Model\User
【发布时间】:2014-09-12 00:20:37
【问题描述】:

我有一个全新的 Symfony 2.4 + FOSUserBundle。 我刚刚配置了FOSUserBundle,本指南:https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md

现在我尝试使用 CLI 创建一个新用户

fos:user:create --super-admin user user@domain.com password1

我得到了这个错误

PHP Fatal error:  Cannot instantiate abstract class FOS\UserBundle\Model\User in /var/www/symfony2/vendor/friendsofsymfony/user-bundle/FOS/UserBundle/Model/UserManager.php on line 55

config.ylm

...
fos_user:
    db_driver: propel
    firewall_name: main
    user_class: FOS\UserBundle\Model\User
...

访问 /register 时出现同样的错误,但 /login 似乎工作正常(虽然我无法登录,因为我没有用户)

有什么想法吗? 提前致谢

编辑:

新用户类:

namespace g9\BoBundle\Model;

use FOS\UserBundle\Model\User as MyUser;
use FOS\UserBundle\Model\UserInterface;
use FOS\UserBundle\Model\UserManager;

class User extends MyUser {
    # .. no code here yet
}

当我使用 CLI 创建用户时,我得到:

  [InvalidArgumentException]
  This user instance is not supported by the Propel UserManager implementation

我应该提交另一个问题吗? (最初的问题得到了答案

【问题讨论】:

    标签: php symfony fosuserbundle propel


    【解决方案1】:

    你不能使用提供的用户模型,你必须extend it and create your own

    当您这样做时,将 user_class 配置参数设置为 您的 用户模型(扩展 FOSUser 的模型)的命名空间。

    目前,您的 user_class 设置为他们的摘要 User,因此它会中断。

    【讨论】:

    • 你能给我一个例子我应该怎么做吗?我对 symfony 很陌生,我知道生成这些类的唯一方法是创建 schema.xml 并让 CLI 构建它。我该如何手动完成?我应该使用哪个命名空间?我应该扩展什么类?
    • 有关如何扩展用户模型的信息,请参阅文档 (github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/…)。
    • 对不起,我正在尝试并得到一些错误。例如:我应该扩展 BaseUser 吗? FOS 不提供 BaseUser,仅提供 User。而且我不能扩展用户,因为我正在尝试定义用户。我觉得我在这里没有得到一些基础知识......
    • 我为我的用户类使用了另一个名称,现在我收到此错误:“Propel UserManager 实现不支持此用户实例”
    猜你喜欢
    • 1970-01-01
    • 2022-01-02
    • 2014-07-24
    • 2015-08-04
    • 1970-01-01
    • 2017-02-05
    • 2015-10-06
    相关资源
    最近更新 更多