私はSymfonyを初めて使い、私の質問に対するSymfony 3の回答を簡単に見つけることができません。 symfony 3 - フォーム - 永続化エンティティ - 選択肢がNULLです
問題
: は、私は基本的なID +名前エンティティ値(国、会社、パートナー、など)すべての選択ボックスが正しくDBから移入されで選択ボックスを移入し、基本的なフォームを設定しています。 しかし、入力したフォームを保存しようとすると、すべての「選択肢」がnullとして返されます。
質問: 選択ボックスの選択された値がINSERTステートメントに送信されることを確認するには、何が欠けていますか?
注:私はForm documentationを見ましたが、このシナリオをカバーしていないようです。
コントローラー抜粋:
012:OpportunityTypeから/**
* @Route("/opportunity/add", name="add_opportunity")
*/
public function addAction(Request $request)
{
$em = $this->getDoctrine()->getManager();
$opportunity = new Opportunity();
$form = $this->createForm(OpportunityType::class, $opportunity);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$em->persist($opportunity);
$em->flush();
return $this->redirectToRoute('/opportunity/add');
}
return $this->render(
'opportunity/add-opportunity.html.twig',
array('form' => $form->createView())
);
}
結果
フォーム小枝:
{% block body %}
<div style="max-width: 600px; margin-top:100px; padding:15px; margin-left:auto; margin-right:auto;" class="card">
{{ form_start(form) }}
<div class="form-header purple darken-4">
<h3><i class="fa"></i>Add Opportunity</h3>
</div>
{{ form_row(form.name) }}
{{ form_row(form.countries) }}
{{ form_row(form.partners) }}
{{ form_row(form.companies) }}
{{ form_row(form.users) }}
{{ form_row(form.stages) }}
{{ form_row(form.stage_changed_date) }}
{{ form_row(form.target_close_date) }}
{{ form_row(form.contract_value) }}
<button class="btn btn-raised btn-primary" type="submit">ADD</button>
{{ form_end(form) }}
</div>
{%の末端ブロック%}
どのようにそれらの間であなたのエンティティとの関係を定義していますか? –
現時点では、すべてのエンティティは "id"と "name"を持つ簡単なORMテーブルマッピングです。 エンティティ間の関係が不足している可能性があります。 しかし、この場合、他のエンティティを保持する必要はありません。 "opportunity"テーブルには、他の値のIDが格納されます。 それぞれのドロップダウンには "値"としての "id"があり、エンティティの国ではなくその実際の "id"を永続化したい。 (作業用挿入物) INSERT INTOの機会(名前、パートナーID、国ID、会社ID、ユーザーID、ステージID、ステージの変更日、目標日時、契約値)VALUES( "テスト"、1,2,1,3,1,1、 "2016-01 -01 "、" 2016-12-12) – LavenPillay
@ChuckNorris 一部のデバッグでは、選択した文字列の値の代わりに、それぞれのドロップダウンリストに_objects_が含まれていることがわかりました つまり、結果には country_id = nullと'countries = [object]'(正しい値が選択されています) ' 関係に関するあなたのコメントは私が見なければならないものです。私はコアのドキュメントを読むでしょうが、どんな提案も非常に役に立ちます。 – LavenPillay