2016-11-12 49 views
0

我已經實現了一個基於Symfony 3.1的論壇軟件包Discutea/DForumBundle,並且希望增強功能併爲其添加功能。我到目前爲止嘗試過How to Override any Part of a Bundle;覆蓋視圖和語言包是可能的,但我也希望能夠添加新的實體並添加新的控制器。Symfony 3.1:如何擴展symfony包的實體?

FOSUserBundle的情況下,這是可能的,因爲我們可以擴展用戶實體並將我們的自定義首選項添加到其中,以便進行調整。什麼是實現這種捆綁的最佳方式?

任何提示或幫助,將不勝感激。

====== ADDED詳情======

我認爲延長實體應該夠我,因爲我只想增加像觀看次數的增加,所有一些新的領域。所以以下是我的新擴展實體:

<?php 

namespace AppBundle\Entity; 

use Discutea\DForumBundle\Entity\Model\BasePost; 
use Doctrine\ORM\Mapping as ORM; 
use Symfony\Component\Validator\Constraints as Assert; 

/** 
* @ORM\Entity 
* @ORM\Entity(repositoryClass="AppBundle\Repository\ForumPostRepository") 
* @ORM\Table(name="df_post") 
*/ 
class ForumPost extends BasePost 
{ 
    /** 
    * @ORM\Column(type="integer") 
    * @ORM\Column(name="views_count", type="integer", nullable=true) 
    */ 
    protected $viewCounts = 0; 


    /** 
    * Set viewCounts 
    * 
    * @param integer $viewCounts 
    * 
    * @return ForumPost 
    */ 
    public function setViewCounts($viewCounts) 
    { 
     $this->viewCounts = $viewCounts; 

     return $this; 
    } 

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

在此之後,我嘗試使用控制檯進行模式更新;但我得到了以下錯誤消息:

[主義\ DBAL \架構\ SchemaException該名稱爲 「my_database.df_post」表已經存在。

如何解決這個問題並更新我現有的模式?在此之後,我打算擴展其他實體。

回答

2

首先,您需要了解您是想擴展該包還是希望更改其某些核心功能。

如果你想改變核心功能,那麼我會建議你fork這個包直接工作在分叉包上。

如果你只想要擴展的實體,那麼:

  • 創建一個從第三方捆綁實體延伸(例如:GuestEntity)你在你的捆綁實體(MyGuestEntity)。

  • 然後,您需要找到在第三方包中使用GuestEntity的位置,並在您的包中覆蓋此控制器。

  • 更換控制器(S),你重寫GuestEntity與(MyGuestEntity

+0

關於什麼我試過到目前爲止,我還添加細節。有什麼建議麼? – Ren