0

リンクバンドルと呼ばれるバンドルがあります。今、私はすべてのバンドルで使用されるすべてのミックスをそこに入れました。

しかし、Linkedというエンティティはありません。

LinkedRepositoryを作成して、すべての共通関数をそこに持つことができるようにします。しかし、他のバンドルでそのリポジトリを取得するにはどうすればよいですか。私はこれをどのように呼ぶかを意味します

$repository = $em->getRepository('LinkedBundle:"*What should I write here*"');
4

2 に答える 2

1

i think this it is not possible as you intend to to it. But I would recommend using a Service Container instead of a Repository. In this Service Container you can use different repositories, which you need to use for these global tasks. The Service Container is also accessible in every controller etc..

Here is the Documentatino for it: http://symfony.com/doc/current/book/service_container.html I don't think that you need the whole injection part. Just define an Service:

services:
    linked_service:
        class: Acme\LinkedBundleBundle\Service\LinkedService

And then get the service in your controller via

public function indexAction()
{
    $service = $this->get('linked_service');
}

Hope this works.

于 2012-08-16T07:16:49.930 に答える
1

別のリポジトリ クラスを持つことはできません。リポジトリ クラスはエンティティにリンクされているため、「スタンドアロン」リポジトリを持つことはできませんが、次の 2 つのオプションがあります。

  1. EntityRepository をサブクラス化し、LinkedRepository という名前を付けます。ここで、一般的なメソッドを追加できます。すべてのカスタム リポジトリ クラスは、LinkedRepository クラスをサブクラス化する必要があります。すべてのエンティティのリポジトリ インスタンスで共通の機能が必要だが、カスタム リポジトリ クラスは必要ない場合は、LinkedRepository クラスをエンティティの repositoryClass として宣言でき@ORM\Entity(repositoryClass="Acme\LinkedBundle\Repository\LinkedRepository")ます。バンドル内のリポジトリ フォルダにリポジトリ クラスがあり、Acme を独自の会社名。
  2. サービスを作成し、そこに共通の機能を追加します。

最初の方が簡単だと思います。

于 2012-08-16T07:23:14.393 に答える