2017-03-25 29 views
0

私は非常に一般的なユースケースと考えていますが、正しいポインタを見つけることはできません。symfony 3エンティティBとエンティティBを関連付けます

ケース:

私は製品エンティティとレビュー実体を持っています。 UIで製品をレンダリングするときに、訪問者がその製品に関する小さなレビューを書くために使用できるフォームを追加します。

明らかに、レビューを提出する際には、製品(オブジェクトまたはID)が必要なので、レビューを書かれた製品に関連付けることができます。

私の最初のアイデアは、フォームに隠し入力フィールドを使用することでした。 Symfony(3)はIDだけでなく完全に水和された製品エンティティを期待しているというエラーを投げます。

私はグーグルでsymfonyのドキュメントでデータトランスフォーマーについて話しています(http://symfony.com/doc/current/form/data_transformers.html)。 どのようなIMHOが手に取るような簡単な作業以上の巨大な過度の感覚のように感じる。

最後に

https://github.com/symfony/symfony/issues/8293

https://github.com/symfony/symfony/issues/6602

https://github.com/symfony/symfony/pull/15053

:私の検索を続け

、明らかに多くの問題がsymfonyの自身のためのGitHubリポジトリに出願されているように私だけではないですように見えます私が見つけたレポもあります。それはここでそれ自身で解決策を提供するようです: https://github.com/Gregwar/FormBundle

この前回のリポジトリの依存関係を取る前に、過去にこの問題を解決したことがあれば誰でもアドバイスできるかどうかをここで確認したいと思いました。

事前に感謝します。

答えて

0

私はあなたのためにこれを簡単にしようとします。コントローラがあり、使用しているメソッドを「ビュー」と呼んでいるとしましょう。あなたがしたいことは、コントローラ内の別のメソッドにフォームを提出させ、それを「コメント」と呼ぶことです。だから、データ変換のためにあなたはそうのようなコメントメソッドを宣言したい:

/** 
* @Route("/comment/{id}", name="product_comment") 
*/ 
public function commentAction(Request $request, Product $product) 
{ 
    ....other code goes here. 
} 

だからあなたのフォームのアクションがコメントメソッドになり、製品のIDに沿って通過する必要があります。これを行うには、フォームの属性を変更し、アクションをコメントパスに設定して、製品のIDをパスに渡します。 Symfonyは、あなたが示したルートを使ってProductエンティティをタイプヒントし、メソッドの引数であるProductタイプに基づいて変換することができます。 Productエンティティのコントローラの上部に適切な "使用"ステートメントを必ず含めてください。

+0

もちろん!あまりにも長いことを見ていると、明らかに見逃すことができます。 多くの感謝! – Guardian

関連する問題