2016-08-26 11 views
0

FOS\UserBundle\Model\Userを拡張する3つのクラス(Auditor、Client、Manager)といくつかの入力フォームがあり、すべてのタイプを作成できます。例えば、(他は同じ方法である)監査クラスのSymfony2でFOSを拡張することができません

:私はそれがうまく動作新しい監査を作成すると

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

、それが監査テーブルの上に作成し、すべてがOKです。しかし、私がログインしようとすると動作しません。また、php app/console app:list-usersコマンドでFOSユーザーが表示された場合、新しいAuditorユーザーは表示されません。

私は間違っていますか?

答えて

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; 

そして、私があまりにも(FOSユーザーをカウント3レベルの階層を)このサブクラスを拡張しました。私はそれらの一つ(他の人も同じ)の下に貼り付けます。

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: 
    db_driver: orm # other valid values are 'mongodb', 'couchdb' and 'propel' 
    firewall_name: main 
    user_class: AppBundle\Entity\User 

ここでは、fos_userとして1つのクラスしか定義していません。

ご要望に応じてPUGXMultiUserBundleを使用してください。

PUGXMultiUserBundleは、さまざまなタイプのユーザーを処理する機能を追加するFOSUserBundleを拡張します。

関連する問題