私は奇妙な問題があります。無効なデータでもsymfonyフォームが有効です
私のフォームは、提供されたデータがそうでない場合でもsymfonyによって有効です。このフォームは、AJAXリクエストによって作成され、投稿される(これは、それに影響を与えることができる)この(xdebugのとretvrieved)のように見えるデータで
if(!$request->isXmlHttpRequest()){
return new JsonResponse(['code' => 403], 403);
}
$name = $request->query->get('name');
$contact = new Contact();
$contact->setName($name);
$form = $this->get('form.factory')->create(ContactType::class, $contact);
if($request->isMethod('POST')){
$form->submit($request);
if($form->isValid()){
$em = $this->get('doctrine.orm.entity_manager');
$em->persist($contact);
$em->flush();
return new JsonResponse(['code' => 200, 'id' => $contact->getId(), 'name' => $contact->getName()]);
}
return new JsonResponse(['formView' => $this->renderView('@MyBundle/Contacts/contactForm.html.twig',['form' =>$form->createView()]), 'code' => 400, 'errors' => $form->getErrors(true)]);
}
return new JsonResponse(['formView' => $this->renderView('@MyBundle/Contacts/contactForm.html.twig',['form' =>$form->createView()]), 'code' => 200], 200);
:
'id' => NULL,
'name' => NULL,
'companyId' => NULL,
'companyTaxId' => NULL,
'birthNumber' => NULL,
'phoneLandLine' => NULL,
'phoneMobile' => NULL,
'phoneFax' => NULL,
'email' => NULL,
'www' => NULL,
問題は、設定された名前であり、フォームは有効とマークされていてもエラーはありませんが、必要に応じてnullです。この後、必須フィールドの欠落に関する教義の例外があります。
これがどうして起こりますか?
のSymfony v2.8.10、Doctrineのv1.6.4
は名前がエンティティにNULLを持たせないように設定されますか? – olibiaz
'isMethod'の代わりに' submit'と 'isSumitted'の代わりに' handleRequest'を使用してください。http://symfony.com/doc/current/best_practices/forms.html#handling-form-submitsのサンプルベストプラクティスを参照してください。あなたの制約は 'Contact'クラスの中にあります。 – yceruto
はい、nullに設定されていません(または参照されていない変数のデフォルトのdoctrine動作)。しかし、私はいつもフォームフィールドの私の定義は、それが必要であるかどうかを言うものだと考えました。 私はhandleRequestとisSubmittedを試しましたが、それはサブミットされたフォームからデータを取得する方法が異なるだけです。検証そのものは、両方の方法では機能しませんでした。 –