我正在使用Symfony4和API Pltaform,API平台工作正常。
我正在尝试使用FormType和Http Client component保存数据,但是如果表单具有布尔属性,则会出现此错误:
[用参数[“ ISBN 2-执行[插入,书名,描述,作者,出版日期,有效日期,价格]值(?,?,?,?,?,?,?)]时发生异常。 7654-1005-8”,“测试书”,“ Lorem ipsum dolor sit amet,securetetur adipiscing elit,sed do eiusmod tempor incididunt u”,“ Alex”,“ 2020-01-10 16:43:53”,null, null]:
SQLSTATE [23000]:违反完整性约束:1048列'active'不能为空
但是如果我从表单中删除属性“ active”,则数据将很好地保存在数据库中。
这是$ data的转储,其中包含表单数据:
这是控制器:
/**
* @Route("/new", name="admin_book_new", methods={"GET", "POST"})
*/
public function new(Request $request)
{
$book = new Book();
$form = $this->createForm(BookType::class, $book);
$form->handleRequest($request);
if ($form->isSubmitted() and $form->isValid()) {
$data = $form->getData();
$this->client->request('POST', $this->getParameter('base_url').'/books', array(
'json' => $data
));
return $this->redirectToRoute('admin_book_index');
}
return $this->render('admin/book/new.html.twig', array(
'form' => $form->createView()
));
}
我这样解决了它:
if ($form->isSubmitted() and $form->isValid()) {
$data = [];
foreach ($form->all() as $field) {
$name = $field->getName();
$value = $field->getData();
$data[$name] = $value;
}
$this->client->request('POST', $this->getParameter('base_url').'/books', array(
'json' => $data
));
return $this->redirectToRoute('admin_book_index');
}