FOS UserBundle - >无法创建新用户

wat*_*ver 2 extend symfony fosuserbundle

这是我第一次独自使用Symfony2,我认为在配置FOS用户包时我犯了一个错误.看起来我的用户实体没有正确扩展FOS\UserBundle\Entity\User.

这是我的User类(与doc中提到的基本相同)

<?php
// src/Acme/UserBundle/Entity/User.php

namespace VillaPrivee\UserBundle\Entity;

use Doctrine\ORM\Mapping as ORM;
use FOS\UserBundle\Entity\User as BaseUser;


/**
 * @ORM\Entity
 * @ORM\Table(name="user")
 */
class User extends BaseUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

    public function __construct()
    {
        parent::__construct();
        // your own logic
    }
}
Run Code Online (Sandbox Code Playgroud)

由于我使用Netbeans,我可以"按住Ctrl键"并确保"FOS\UserBundle\Entity\User"存在.到目前为止,我没有看到任何错误......

但是当我尝试使用终端创建新用户时,我收到此错误:

Fatal error: Call to undefined method VillaPrivee\UserBundle\Entity\User::setUsername() 
in /Applications/MAMP/htdocs/VillaPrivee/vendor/friendsofsymfony/
user-bundle/FOS/UserBundle/Util/UserManipulator.php on line 50
Run Code Online (Sandbox Code Playgroud)

不知道我应该为你们提供哪些其他细节,请告诉我,在这种情况下是否有任何其他文件可能很重要.

谢谢你的帮助!

编辑:

<?php

namespace VillaPrivee\UserBundle;

use Symfony\Component\HttpKernel\Bundle\Bundle;

class VillaPriveeUserBundle extends Bundle
{
    public function getParent()
    {
        return 'FOSUserBundle';
    }
}
Run Code Online (Sandbox Code Playgroud)

config.yml:

fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: VillaPrivee\UserBundle\Entity\User
Run Code Online (Sandbox Code Playgroud)

Bar*_*tek 5

我认为你扩展错误的课程,尝试:

use FOS\UserBundle\Model\User as BaseUser;
Run Code Online (Sandbox Code Playgroud)

编辑:

FOS\UserBundle\Entity\User是的,不推荐使用扩展,Extend FOS\UserBundle\Model\User directly. 文档