0

私は Symfony の初心者で、質問があります。私は現在、ギャラリー バンドル (「ギャラリー」と「画像」エンティティで構成される) を作成していますが、ここで問題が発生します。

画像をアップロードしたり、ファイルに対応するエンティティの画像を使用したりできますが、画像をギャラリーに分類したいと思います。画像を表す ArrayCollection $images (Gallery Entity への) を使用して、Gallery エンティティと Image エンティティの間に 1 対多の関係を作成しました。

では、ブラウザから $images 変数を設定するにはどうすればよいでしょうか? 私はその解決策を考えました:テキストフィールドをギャラリーエンティティに画像名とともに追加し、ギャラリーエンティティを永続化する前に、対応する画像エンティティを取得して変数 $images に入れますが、問題はできることですエンティティからエンティティ マネージャにアクセスしないでください。

助けてくれてありがとう、コードが必要な場合はもちろん、かなり基本的なものであってもお見せできます.

編集: エンティティからエンティティ マネージャにアクセスする方法を見つけましたが、安全ではないと言われています。当面はそれを使うと思いますが、誰かが私にもっと良い方法を説明してくれるなら、私はそれを取ります.

4

2 に答える 2

0

$image 名の配列からギャラリーを作成および/または更新できるエンティティ マネージャーが挿入されたサービスを記述し、エンティティをエンティティ マネージャーに依存させるのではなく、コントローラーにそれを呼び出すことができます。例: (services.yml でサービスを構成する方法については、上記のリンクを参照してください)

class GalleryManager
{
    private $entityManager;

    public function __construct(\Doctrine\ORM\EntityManager $entityManager)
    {
        $this->entityManager = $entityManager;
    }

    public function updateGalleryImages(Gallery $gallery, array $imageNames)
    {
        ...
    }
}

ただし、ここで画像名を入力するのが最善の方法かどうかはわかりません。イメージ名が一意であることをどのように保証しますか? 見つからない名前を処理しますか? 重複した名前を処理しますか? インターフェースがどれだけ使いやすいかは重要ですか? イメージ名ごとに 1 つのクエリを実行すると、効率はどうですか? ギャラリーにはいくつ含まれる可能性がありますか?

代替のユーザー インターフェイスは、ある種の画像検索/リストを提供し、ユーザーが結果から画像を選択してギャラリーに追加できるようにすることです。この場合、正しく実装されていれば、選択は Image エンティティの配列として返されます。最も単純な方法としては、少数の画像の場合、すべての画像名を複数選択できるリスト ボックスにすることができますが、理想的には、ユーザーは選択中の画像のサムネイル プレビューを表示したいと考えています。

すべての画像名 (またはチェックボックスのセット) の基本的なリスト ボックスは、画像コレクションのエンティティ フィールドを持つフォーム (data_class ギャラリー) を使用して実装できます。これは gallery->images に直接マップされ、エンティティは EntityManager に依存する必要はありません。

フィルター処理された一連の画像からの選択はより複雑ですが、興味がある場合は正しい方向に向けることができます。

于 2013-05-10T15:15:21.703 に答える