2013-05-26 71 views
1

我想擴展默認的用戶實體屬性。在使用SonataUserBunle擴展FOSUserBundle後,在數據庫中有兩個用於存儲用戶的表格:fos_userfos_user_user。我想延長fos_user

這裏是應用程序/ AppKernel.php:
擴展SonataUserBundle實體

new Sonata\UserBundle\SonataUserBundle('FOSUserBundle'), 
new Application\Sonata\UserBundle\ApplicationSonataUserBundle(), 

在app/config.yml文件我設置:

fos_user: 
    db_driver:  orm<br> 
    firewall_name: main<br> 
    user_class:  Acme\DemoBundle\Entity\User<br> 
    group:<br> 
     group_class: Application\Sonata\UserBundle\Entity\Group<br> 

sonata_user: 
    security_acl: true 

    class: 
     user:  Acme\DemoBundle\Entity\User 
    admin: 
     user: 
      class: Acme\DemoBundle\Admin\UserAdmin 
parameters: 
    sonata.user.admin.user.class: Blogger\BlogBundle\Admin\UserAdmin 
    sonata.user.admin.user.entity: Blogger\BlogBundle\Entity\User 

doctrine: 
    orm: 
     auto_mapping: auto 

SonataUserBundle在src/Application/Sonata/UserBundle
創建重寫SonataUserBundle,我通過在src/Acme/DemoBundle/Admin/UserAdmin中創建另一個UserAdmin類來擴展UserAdmin,並且所有工作正常
現在我想擴展用戶實體(fos_user表)以添加新的屬性。
這裏是我的Acme /演示/實體/ user.php的,我想要擴展默認的用戶實體

namespace Acme\DemoBundle\Entity; 

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

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

    /* 
    * @ORM\Column(type="string", name="newAttribute") 
    */ 
    protected $newAttribute; 


    public function __construct() 
    { 
     parent::__construct(); 
     // your own logic 
    } 

    /** 
    * Get id 
    * 
    * @return integer 
    */ 
    public function getId() 
    { 
     return $this->id; 
    } 
} 


我應該怎麼做來擴展默認fos_userphp app/console doctrine:generate:entities Acme/DemoBundle

我已經閱讀關於這個問題的很多帖子,但沒有任何解決方案幫助我。我試圖擴展模型類而不是實體類,但也沒有任何變化

回答

1

您不必。

new Sonata\UserBundle\SonataUserBundle('FOSUserBundle') 

在這裏,您正在告訴SonataUserBundle也使用FOSUserBundle。

然後在你的用戶實體設置:

use Sonata\UserBundle\Entity\BaseUser as BaseUser; 
use Doctrine\ORM\Mapping as ORM; 

/** 
* @ORM\Entity 
* @ORM\Table(name="User") 
*/ 
class User extends BaseUser 

因爲您對SonataUserBundle說:「使用fosuserbundle」你從他要去奏鳴曲用戶捆綁用戶實體延伸「合併」的2款機型進入1並從您的用戶實體中添加您的自定義字段。

+0

謝謝,但我已經解決了,我按照這個答案中描述的步驟:http://stackoverflow.com/a/15625000/1370752 – phpsherpa