2012-04-18 9 views
10

私はSymfony 2アプリケーションのエンティティを生成しようとしています。エンティティは複数のバンドル(場合によっては複数のアプリケーション)で共有されるため、バンドルに所属させたくありません。 それらをsrc/MyApp/Entityフォルダに入れたいです。Symfony2/Doctrine2:バンドルの外にあるエンティティを生成する

私はすでに私が使用してcorresonding PHPクラスを生成しようとしているのsrc/MyAppに/エンティティ/設定/教義に(class1.orm.yml、...)

を格納し、私のエンティティのYMLを持っています教義:生成します。ここでは、エンティティのタスク

は、私はここに私のアプリで/設定/ config.yml

orm: 
    auto_generate_proxy_classes: %kernel.debug% 
    auto_mapping: false 
    mappings: 
     AppRest: 
     type: yml 
     prefix: AppRest\Entity 
     dir: %kernel.root_dir%/../src/AppRest/Entity/config/doctrine 

は、私は、エンティティ

php app/console doctrine:generate:entities AppRest/Entity 
0を生成するために使用するコマンドである持っているものですここで

私は教義を作りたい、私は

[InvalidArgumentException] 
Bundle "AppRest" does not exist or it is not enabled. 

を得る例外は、私は股関節がバンドルであるエンティティを生成しようとしていないよということを理解しています。私も--pathオプション(--path = src/AppRest/Entity)を指定しようとしましたが、何も変更されませんでした。

誰でも手助けできますか?

編集

私は問題を解決し、私のdirの中に余分なスペースを取り除きます。パスオプションを指定する必要があります

+1

私はあなたがS2を生成して使用することになって多くの運を持っていないと思いますD2エンティティはバンドルの外側にあります。ちょうど彼ら自身のバンドルに入れて、それで済ませてください。複数のバンドル間でエンティティを共有するのは簡単です。 – Cerad

+0

+1 Doctrine2と組み合わせたSf2を使用すると、Sf2によるDoctrineの実装を受け入れることができます。 – AlterPHP

答えて

3

実際には、私は上記のdirオプションでスペースを欠落していました。これは今でも動作しますが、それが最善の方法であるかどうかはまだ疑問です。

+3

PHPコードをSymfonyに統合することがバンドルの目的です。バンドルの外に移動するコードが多くなればなるほど、symfonyに依存することは少なくなります。 –

+0

バンドルは最善の方法です。あまりにも遠くなる前にいくつかのクエリを構築してみてください。あなたはそこにいくつかの問題に遭遇するかもしれません。 – Cerad

+1

さて、我々はこれを再評価し、エンティティを含むCoreBundleと、そのCoreBundleを参照する特殊バンドルを使用して実装を選択しました – David

-1

このようなエラーが発生した場合は、バンドルディレクトリの名前ではなく、バンドルのショートカット名を指定したかどうかを確認してください。たとえば、Acme \ DemoBundleがある場合、その短縮名はAcmeDemoBundleです。この場合

orm: 
    mappings: 
     DemoBundle: 
      .... 

は不正です。

正しいです:

orm: 
    mappings: 
     AcmeDemoBundle: 
      .... 
関連する問題