0

Symfony2 と Sonata バンドル (Sonata-Admin および Sonata-Media) を使用して、CMS プロジェクトを開発しています。

カスタム バンドル用に管理者クラスをセットアップしましたが、うまく機能しています。エンティティに画像を添付して、ユーザー ページで表示する必要があります。しかし、カスタム エンティティで使用する SonataMediaBundle に問題があります。エンティティ クラスの AdminController にフィールドを追加し、エンティティ定義で manyToOne 関係を作成しようとしています。

私はそれを機能させたことがなく、一般的に「エンティティが見つかりませんでした」という例外が発生します (Doctrine\ORM\EntityNotFoundException クラス)

SonataMedia Documentation以外に記事が見つからず、この問題を解決できませんでした。SonataMedia Bundle の概念全体を読んで理解するための良い記事を知っている人はいますか?

私のコードに関する詳細情報は以下のとおりです。

MyEntity.orm.yml

PRJ\Bundle\PRJBundle\Entity\MyEntity:
type: entity
table: my_table
fields:
    id:
        id: true
        type: integer
        unsigned: false
        nullable: false
        generator:
            strategy: IDENTITY

# Other fields eliminated

manyToOne:
    picture:
        targetEntity: Application\Sonata\MediaBundle\Entity\Media
        joinColumns:
                name: Picture_id
                referencedColumnName: id
        orphanRemoval: false
lifecycleCallbacks: {  }

実際、このコードは管理パネルとユーザー ページの両方で機能していますが、管理ユーザーがレコードを編集している場合や新しいレコードを入力している場合、管理ページで機能させることができませんでした。

また、間違っている場合は修正してください。画像を添付するカスタムエンティティの管理クラスを生成できると想定しています。フィールドを追加し、それをデータベースの media__media テーブルへの外部キーとして定義し、エンティティに必要な定義を作成します。最後に、新しいエンティティを作成するときに、SonataMediaBundle を介して新しい写真をアップロードできるようになります。管理者ユーザーはエンティティの詳細を入力し、アップロード ボタンを押して画像を選択します。アップロード ボタンは SonataMedia バンドルで機能し、SonataMedia バンドルのテーブルに画像をアップロードします。また、バンドルのテーブルに新しいレコードが作成され、新しく作成されたメディアに関連付けられます。

私の問題をうまく説明できれば幸いです。ありがとうございます。

4

1 に答える 1