Symfony4 无法使用API平台保存具有布尔属性的表单数据
我使用的是Symfony4和API-Pltaform,API平台运行良好 我尝试使用FormType和Http客户端组件保存数据,但如果表单具有布尔属性,则会出现以下错误: 使用参数执行“插入图书(isbn、标题、描述、作者、出版日期、有效期、价格)值(?、、?、?、?、?、?、?、?)”时发生异常[“isbn 2-7654-1005-8”、“测试书”、“Lorem ipsum Door sit amet、Concertetur Adipsicing Elite、sed do eiusmod Temporal Incidedunt u”、“Alex”、“2020-01-10 16:43:53”、null、null]: SQLSTATE[23000]:完整性约束冲突:1048列“活动”不能为null 但是如果我从表单中删除属性“active”,数据会很好地保存在数据库中 这是$data的转储,其中包含表单数据: 这是控制器:Symfony4 无法使用API平台保存具有布尔属性的表单数据,symfony4,api-platform.com,Symfony4,Api Platform.com,我使用的是Symfony4和API-Pltaform,API平台运行良好 我尝试使用FormType和Http客户端组件保存数据,但如果表单具有布尔属性,则会出现以下错误: 使用参数执行“插入图书(isbn、标题、描述、作者、出版日期、有效期、价格)值(?、、?、?、?、?、?、?、?)”时发生异常[“isbn 2-7654-1005-8”、“测试书”、“Lorem ipsum Door sit amet、Concertetur Adipsicing Elite、sed do eiusmod T
/**
* @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');
}
实体书用ApiResource注释标记,我通过HttpClient symfony组件将数据发送到api。api平台可以工作,如果我从表单中删除属性“active”,数据将保存在base中。