我有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用户。
我做错了什么?
答案 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;
希望这会对任何人有所帮助......