无法在Symfony2中登录扩展FOS

时间:2016-08-26 08:58:09

标签: php symfony inheritance doctrine-orm fosuserbundle

我有3个类(Auditor,Client和Manager)扩展FOS\UserBundle\Model\User和几个输入表单来创建每种类型。

例如,对于Auditor类(另一个是以相同的方式):

/**
 * @ORM\Entity
 * @ORM\Table(name="auditor")
 */
class Auditor extends BaseUser implements NotificationInterface
{
    /**
     * @ORM\Id
     * @ORM\GeneratedValue
     * @ORM\Column(type="integer")
     */
    protected $id;

当我创建一个新的Auditor时,它工作正常,它在审核员表上创建,一切正常。但是当我尝试登录时它不起作用。此外,如果我通过php app/console app:list-users命令看到FOS用户,则不会显示新的Auditor用户。

我做错了什么?

2 个答案:

答案 0 :(得分:1)

虽然您已从BaseUser类扩展了类,但您无法在FOSUserBundle中使用多个类进行登录。检查您的app/config/config.yml文件。

fos_user:
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel'
    firewall_name: main
    user_class: AppBundle\Entity\User

在这里,您只定义了一个类作为fos_user。

根据您的要求使用PUGXMultiUserBundle

  

PUGXMultiUserBundle扩展了FOSUserBundle,增加了处理不同类型用户的功能。

答案 1 :(得分:0)

由于我不想使用其他外部捆绑包,我试图以另一种方式解决,我想出了最终可以解决的解决方案。

我以这种方式扩展了FOS用户实体:

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

    /**
     * @ORM\Table(name="fos_user")
     * @ORM\InheritanceType("JOINED")
     * @ORM\DiscriminatorColumn(name="discr", type="string")
     * @ORM\DiscriminatorMap({"user" = "User","subscriber" = "Subscriber", "client" = "Client", "company" = "Company"})
     * @ORM\Entity(repositoryClass="AppBundle\Repository\UserRepository")
     *
     */
    class User extends BaseUser
    {
        /**
         * @ORM\Id
         * @ORM\Column(type="integer")
         * @ORM\GeneratedValue(strategy="AUTO")
         */
        protected $id;

然后在每个子类(Subscriber,Client和Company)中我也扩展了这个子类(3级层次结构计算FOS用户)。我粘贴其中一个(其他人也一样):

use AppBundle\Entity\User as MyUser;
use Doctrine\ORM\Mapping as ORM;

/**
 * @ORM\Entity(repositoryClass="AppBundle\Repository\ClientRepository")
 * @ORM\Table(name="client")
 */
class Client extends MyUser
{
    /**
     * @ORM\Id
     * @ORM\Column(type="integer")
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    protected $id;

希望这会对任何人有所帮助......