問題の解決策を見つけるのに何時間も費やしましたが、ここで答えを見つけたいと思っています。
これが私のフォーム(エクスペリエンスタイプ)のコードです:
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('intitulePoste')
->add('entreprise')
->add('dateDebut')
->add('dateFin')
->add('mission')
->add('idContrat', 'entity', array(
'class' => 'ClasseBundle:Contrat',
'property' => 'contrat',
// 'property_path' => false,
'multiple' => false,
'mapped' => true,
'empty_value' => 'Contrat',
// 'expanded'=> true,
))
->add('idville', 'entity', array(
'class' => 'ClasseBundle:Ville',
'property' => 'nom',
// 'property_path' => false,
'multiple' => false,
'mapped' => true,
'attr' => array(
'class' => 'lesvilles'
),
'empty_value' => 'Ville',
))
;
}
そして、エンティティをデータベースに登録するメソッドは次のとおりです。
public function testAction()
{
$exp = new Experience();
$form = $this->createForm(new ExperienceType(), $exp);
$request = $this->get('request');
if ($request->getMethod() == 'POST')
{
$form->bind($request);
if ($form->isValid())
{
$em = $this->getDoctrine()->getManager();
$exp = $form->getData();
$exp->setIdMembre($this->idMembreAction());
$em->persist($exp);
$em->flush();
return $this->redirect($this->generateUrl('test'));
}
}
return $this->render('MembreBundle:Default:FormExp.html.twig', array(
'form' => $form->createView()));
}
フォームを検証すると、「HTTP エラー 500 (内部サーバー エラー)」というエラーが表示され、ファイルdev.logを使用して次のメッセージが表示されます。
doctrine.DEBUG: INSERT INTO Experience (idContrat, idMembre, idVille, intitulePoste company, StartDate, EndDate, Mission) VALUES {"1" (,,,,,,,????): "[オブジェクト] (プロジェクト\\ ClasseBundle \ \ Entity \ \ Contract: {}) "," 2 ": 1," 3 ":" [オブジェクト] (project \ \ ClasseBundle \ \ Entity \ \ City: {}) "," 4 "," ggg "," 5 ":" ワッフル "," 6 "," 2222/22/22 "," 7 "," 2222/22/22 "," 8 ":" hjjhjhj "} []
そこで、ExperienceType ファイルに idVille フィールドと idContart フィールド (必須 false ) の両方に条件を追加し、フォームを検証するときに両方のフィールドが null 値 ( nullable = true )を受け入れることを Experience.php ファイル (エンティティ) に追加しました。私のエンティティは問題なくデータベースに保存されています。だから問題は何ですか?ありがとう