問題タブ [symfony4]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
474 参照

symfony - シンフォニー。フォームの送信後、CollectionType からのフィールドの ArrayCollection に 1 つの要素が含まれていません。

私のモデルには、RealEstate と Image という 2 つの関連するクラスが含まれており、RealEstate の 1 つのインスタンスに対して、多数の Image のインスタンスが存在する可能性があります。Image クラスは他のクラスと関連付けて使用することもできるため、「1 対多、結合テーブルを使用した単方向」の関係を選択しました。これにより、イメージがどこで使用されているかを知る必要がなくなります。次に、RealProperty クラスには $images プロパティ、getImages()、addImage(Image $image)、および removeImage(Image $image) メソッドが提供され、コンストラクター内の $images は空の ArrayCollection によって定義されます。したがって、次のモデルクラスがあります。

1) アプリ\エンティティ\RealProperty\RealProperty

2) アプリ\エンティティ\プラットフォーム\イメージ

クラスごとに、適切なフォーム タイプを作成しました。

1) アプリ\フォーム\RealProperty\RealPropertyType

2) アプリ\フォーム\プラットフォーム\イメージタイプ

CollectionType を含むフォームが作成されるコントローラーのコードを次に示します。

ただし、Image インスタンスを含む必要がある ArrayCollection は常に空ですが、クライアント側では CollectionType のすべての子フィールドにイメージが含まれます。

Vich/UploaderBundle の構成が間違っている、サーバー ディレクトリに画像を保存する権限がない、データベース スキーマが正しく記述されていない、と推測できますが、違います。すべてが正しいです。特にこのために、newAction() で ImageType フォームを作成する別の ImageController を作成し、すべての画像をデータベースに安全に保存します。したがって、問題は ArrayCollection レベル、または「1 対多、結合テーブルによる単方向」関係のレベルのどこかにあります。そう思います。

この落とし穴を見つけるのを手伝ってください。私は非常に感謝されます。必要に応じて、git を介してプロジェクトを共有できます。