Im学習symfony 3 & doctrineと私はエンティティコレクションでフォームを作成しました。エンティティは、ポストとmanyTomanyリレーションを持つタグです。メインフォームは、タグのコレクションを持つPostです。 私のコレクションにタグのID(主キー)のみを渡したいと思います。その結果、私は、タグ形式で一つだけのフィールドがあります。symfonyコレクション内のエンティティ主キー
$builder->add('tagId');
私はそれのためにオートコンプリートを作成し、私は主キーのみを必要とする理由thatsの。 フォームを保存した後、doctrineはIDを渡して新しいタグエンティティを作成しますが、新しいものを作成するのではなくそれらのエンティティを探したいと思います。見当もつかない...私はそれが私のコントローラの内部で動作するようにしようとしていた
:
$formTags = $form->get('tag');
foreach ($formTags->getData() as $key => $formTag)
{
// here i have new entities with id ;/
if($formTag->getTagId())
{
// so i tryied to find them, and replace it
$formTags->offsetSet($key,
array($this->getDoctrine()->getRepository('BlogBundle:Tag')
->find($formTag->getTagId())));
}
}
をしかし、symfonyはまた、setDataメソッドで、私に例外をスローします。フォームが提出された後にそれを変更します。私はあなたが私を助けることができることを願っています!
私はデータトランスフォーマーを作ろうとしていました。忘れて言えば:)問題私の変圧器がタグオブジェクトにtagIdフィールドを変更していたか?結果では、私は新しいエンティティでタグオブジェクトを持っていましたが、代わりにタグID値 - 内部に別のオブジェクトがありました。だから私のために期待どおりに動作しません。私はタグIDの代わりにコレクションフィールドのトランスフォーマーを作るべきだと思いますが、どのように動作させるのか分かりません。私はコレクション内の "タグ"フィールドを作成して変換するために試しましたが、doctrineはフィールドに基づいてエンティティから値を取得しようと常に試みましたので、getTag()メソッドは見つかりませんでした。
私はこの前にこれを行いました。忘れて言えば:)問題私の変圧器がタグオブジェクトにtagIdフィールドを変更していたか?結果では、tagIdの値を持たない新しいエンティティを持つオブジェクトを保持します。内部に別のオブジェクトがありました。私はタグIDの代わりにコレクションフィールドのトランスフォーマーを作るべきだと思いますが、どのように動作させるのか分かりません。私はコレクション内の "タグ"フィールドを作成して変換するように試しましたが、doctrineはフィールドに基づいてエンティティから値を取得しようと常に試みます。つまり、getTag()メソッドは見つかりませんでした。 – Daimos
最終的には、私はデータトランスフォーマーなしで(本当に悪い方法で)動作させるために近くにあったので有用でしたが、私はあなたのポストの後にそれを使ってますます多くのことを試みていました、そして今働いています – Daimos