2016-11-12 11 views
0

私はSymfony 3.1ベースのフォーラムバンドルDiscutea/DForumBundleを実装しており、機能を強化して追加したいと考えています。私はこれまでに試してみたHow to Override any Part of a Bundle;ビューと言語パックをオーバーライドすることは可能でしたが、新しいエンティティを追加して新しいコントローラを追加することもできます。symfony 3.1:symfonyバンドルのエンティティを拡張するには?

FOSUserBundleの場合、これはユーザーエンティティを拡張してカスタム設定を追加することで可能になりました。この種のバンドルで同じことを達成する最良の方法は何でしょうか?

ヒントや助けていただければ幸いです。

====== ======に追加詳細情報を

私は私だけ再生回数と、すべてのようないくつかの新しいフィールドを追加するためのエンティティを拡張することは、私のために十分であるべきだと思います。したがって、以下は私の新しい拡張エンティティです:

<?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; 
    } 
} 

この後、私はコンソールでスキーマの更新を試みました。名前 を持つテーブル 'my_database.df_post' はすでに存在している[教義\ DBAL \スキーマ\ SchemaException]

:しかし、私は、次のエラーメッセージが表示されました。

これを克服して既存のスキーマを更新する方法を教えてください。その後、私は他のエンティティも拡張しようと考えています。

答えて

2

まず、バンドルを拡張するだけでよいのか、それともそのコア機能の一部を変更したいのかを理解する必要があります。

コア機能を変更する場合は、フォークフォークをフォークし、フォークされたバンドルを直接操作してください。

あなたがだけにして、エンティティを延長したい場合:

  • (例えば:GuestEntity)サードパーティのバンドルエンティティから延びるあなたのバンドル内のエンティティ(MyGuestEntity)を作成します。

  • 次に、GuestEntityが使用されているサードパーティ製のバンドルの場所を探し、バンドル内のこのコントローラーをオーバーライドする必要があります。

  • は、私は私がこれまで試したどのに関する詳細を追加した

+0

あなたは(MyGuestEntity)とGuestEntityをオーバーライドすることを、コントローラ(複数可)に交換してください。助言がありますか? – Ren

関連する問題