2016-09-22 61 views
-1

我一直都在想這個問題,但我總是可以在沒有直接面對它的情況下解決問題。直到今天。覆蓋第三方Symfony包的主義實體

我有以下需求:

有一個實體,我要覆蓋這麼一個第三方包,我可以添加一些額外的註釋(不只是映射的註釋,JMS註釋,BeSimple註解,等等)。實體不是 a 映射超類我也不能通過使用接口來解決問題。

有人可以解決一些問題?

我會用代碼解釋:

第三方捆綁實體類我想好歹延長:

namespace Third\PartyBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* User 
* 
* @ORM\Table(name="User") 
* @ORM\Entity(repositoryClass="Third\PartyBundle\Repository\UserRepository") 
*/ 
class User 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=20 
    * 
    * @Assert\NotBlank() 
    */ 
    private $name; 
} 

我想達到的目標:

namespace My\OwnBundle\Entity; 

use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 
use BeSimple\SoapBundle\ServiceDefinition\Annotation as Soap; 

/** 
* User 
* 
* @ORM\Table(name="User") 
* @ORM\Entity(repositoryClass="My\OwnBundle\Repository\UserRepository") 
*/ 
class User 
{ 
    /** 
    * @var integer 
    * 
    * @ORM\Column(name="id", type="integer") 
    * @ORM\Id 
    * @Soap\ComplexType("int", nillable=false) 
    * @ORM\GeneratedValue(strategy="AUTO") 
    */ 
    private $id; 

    /** 
    * @var string 
    * 
    * @ORM\Column(name="name", type="string", length=20 
    * @Soap\ComplexType("string", nillable=false) 
    * @Assert\NotBlank() 
    */ 
    private $name; 
} 

注意,第二班級有額外的註解從Besimple。

+0

在大多數發佈實體的包中,可以設置自定義實體類以在配置中使用。你有沒有檢查這種可能性? – Wilt

+0

您是否嘗試從其他用戶類擴展一個用戶類,如下所示:class User BaseUser –

+0

@Wilt否,沒有這種可能性。 – Astaroth

回答

1

您可以使用symfony中的捆綁繼承,如:

class BorhUserBundle extends Bundle 
    { 
     public function getParent() 
     { 
      return 'FOSUserBundle'; 
     } 
    } 

下面是文檔: symfony doc

所以,你只需要在具有相同名稱的相同目錄下創建實體和繼承實體...這是我們如何擴展FosUserBundle

0

在大多數發佈實體的bundle中,可以設置自定義實體類以在配置中使用。你有沒有檢查這種可能性?

關於這樣的庫/模塊is the ZfcUser module from ZF-Commons的示例。在該模塊中,全局配置文件中有一個全局密鑰'user_entity_class',默認爲ZfcUser\Entity\User,但可用於指向要使用的備用實體類。

請檢查the config file here以供參考。