无法使用API 平台保存具有布尔属性的表单数据

问题描述 投票:-1回答:1

我正在使用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的转储,其中包含表单数据:

enter image description here

这是控制器:

/**
 * @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()
    ));
}
symfony4 api-platform.com
1个回答
0
投票

我这样解决了它:

    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');

    }
© www.soinside.com 2019 - 2024. All rights reserved.