2016-08-26 3 views
0

У меня есть 3 класса (Аудитор, Клиент и Менеджер), расширяющий FOS\UserBundle\Model\User и несколько форм ввода для создания каждого типа.Не удается войти в расширение FOS в Symfony2

Например, для класса Auditor (другие являются таким же образом):

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

Когда я создаю новый Аудитор он работает нормально, он создает на столе аудитора и все в порядке. Но когда я пытаюсь войти в систему, это не сработает. Кроме того, если я вижу пользователей FOS командой php app/console app:list-users, новый пользователь Аудитора не появляется.

Что я делаю неправильно?

ответ

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, клиент и компания) Я тоже расширил этот подкласс (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; 

Надеется, что это поможет кто-нибудь ...

+0

Хорошего подхода. Как мы можем иметь разные средства контроля доступа для разных пользователей? – TRiNE

1

Хотя вы расширили классы класса BaseUser, вы не можете использовать несколько классов для входа в систему FOSUserBundle. Проверьте файл app/config/config.yml.

Здесь вы определили только один класс как fos_user.

Используйте PUGXMultiUserBundle для Вашего искушения.

PUGXMultiUserBundle расширяет FOSUserBundle, добавляя эту функцию для обработки пользователей разных типов.

 Смежные вопросы

  • Нет связанных вопросов^_^