0

Symfony2 にフォームを埋め込む際に問題があります。私は技術的に間違ったことをしている可能性がありますが、おそらく私が犯した間違いはdb-setupのレベルにあり、そもそもフォームを埋め込む必要はありません. コードを提示する前に、まずこれに焦点を当てましょう。

V と O の 2 つのエンティティを作成しました。どちらも場所を表しますが、異なるタイプの場所を参照します。ref-id を通じて、それぞれがエンティティ アドレスを参照します。複数の V が同じアドレスを参照することも、複数の O が同じアドレスを参照することもあり、同じアドレスに V と O が存在することさえあります。V、O、およびアドレスの表示が機能します (コントローラーとルーティングが機能します)。アドレスの作成または編集も正常に機能します。私は AddressType というフォーム タイプを作成しましたが、これもレンダリングして正常に動作します。

V と O にも formTypes があります。VType と OType です。Twig テンプレート、ルート、コントローラー アクションなどが用意されています。

ここで、ユーザーがフォームに新しい V を入力できるようにしたいと考えています。フォームには、新しい住所を入力するためのフィールドもあります。したがって、ユーザーが何らかのリストから既存のアドレスを選択することは望ましくありませんが (ただし、それが機能するようになりました)、新しいアドレスを追加できるようにしたいと考えています。アドレスが db テーブルの "Addresses" に既に存在する場合 (その可能性は非常に高い)、Symfony2 は同じアドレスを再度作成するのではなく、その既存のアドレスを参照する必要があります。

ここでの問題は、V または O フォームに埋め込まれた Address フォーム (AddressType) を提示できないことです。基本的に、AddressType フォームを V または O フォームの一部としてレンダリングしたいと考えています。これは可能ですか?

ただし、私の db-setup が正しくない可能性が非常に高く、Address を別のエンティティ (および db テーブル) にするべきではなく、エンティティ V と O の一部にするべきでした。問題だと思いますが、それは良い習慣ですか?

よろしくお願いします。

4

1 に答える 1

0

同様の問題がありました。これは複雑なフォームであり、簡単には実行できない場合があります。最善の方法は、カスタム フォーム タイプまたは生のフォーム (私が好む) を作成し、Request クラスを直接使用してこのフォームを処理するコントローラー アクションを作成することです。次に、ConstraintCollections を使用して入力を検証し、クラスと Doctrine の EntityManager を使用してエンティティを直接構成できます。

このリンクは役立つかもしれません - または、少なくとも非オブジェクトの検証について私を大いに助けてくれました: http://www.ricardclau.com/2011/11/how-to-use-symfony2-validator-component-without-forms-エンティティとデータ配列/

したがって、基本的にはここにコードを記述する必要があります。

于 2012-04-25T12:26:13.587 に答える