5

Symfony2 プロジェクトを最初から開始し、そこにFOSUserBundleをインストールしました。

次に、それらの間に関係を持たせる必要があるいくつかのエンティティと、ユーザー エンティティを使用して (実際には、ORM デザイナーで生成された) いくつかのエンティティを記述しました。

私はItemsに属しているUsers、そのグループにCollections属している、などがあります。UsersItems

FOSUserBundle を使用したので、アノテーションを使用して定義された基本的な User クラス ( https://github.com/FriendsOfSymfony/FOSUserBundle/blob/master/Resources/doc/index.md、ステップ 3a) しかなく、config/doctrineフォルダーもUser.ymlファイルもありません。 .

次に、フォルダーを作成し、上記MyBundle/Resources/config/doctrineのファイルを追加しました。yml

コマンドライン ツールでエンティティを生成しようとすると、すべて正常に動作します。yml ファイルからエンティティが作成されます。

ただし、この時点で、以前にログインが機能していた URL ( FOSUserBundleのみがインストールされていた場合) をブラウザーにロードしようとすると、次のエラーがスローされます。

MappingException: クラス「X\MyBundle\Entity\User」の「/var/www/concert/src/X/MyBundle/Resources/config/doctrine/User.orm.yml」という名前のマッピング ファイルが見つかりません。

CRUD ロジックの生成などの次のアクションは、フォルダー*.orm.ymに l ファイルがある限り機能しません。config/doctrineそれらを削除すると、CRUD 生成は機能しますが、実際の mysql テーブルの生成は機能しません。

これらをジャグリングすると、テーブルも取得できるようになりますが、エンティティが yml (物事を「機能させる」ために削除します)マッピングの知識はありません。

これは本質的に間違っていますか?FOSUserBundle に基づく User エンティティと関係のある yml ベースのエンティティを保持し、さらに便利なコマンドライン生成ツールを取得できるようにするには?

4

1 に答える 1

6

あなたが説明する問題は、構成フォーマット(yamlと私はアノテーションを想定しています)の混合に起因します。モデルのアノテーションを削除し、独自のモデルの場合と同じようにyamlファイルに置き換えることで、これを簡単に修正できます。

残念ながら、FOSUserBundle-docsには注釈の使用方法しか示されていません。そのため、X \ MyBundle \ Entity \ UserがFOSUSerBundleのUserEntityを拡張する場合、yaml形式にすばやく変換できます。

X\MyBundle\Entity\User:
    type:  entity
    table: fos_user
    id:
        id:
            type: integer
            strategy: { generator: "AUTO" }

BaseModelはマップされたスーパークラスであり、すでにの内容を記述しているため、残りの部分はFOSUserBundleによって処理されUser.orm.xmlますが、独自のモデルの場合と同じように、既存の値を置き換えたり、追加の値を追加したりすることもできます。

アプリ全体でアノテーションを使用しない場合は、app/config/config.yml副作用を防ぐためにアノテーションを無効にすることもできます。

于 2013-02-20T19:30:58.697 に答える