Не удается сохранить данные формы, имеющие логический атрибут, с платформой API - PullRequest
0 голосов
/ 10 января 2020

Я использую Symfony4 и API Pltaform, платформа API работает нормально.

Я пытаюсь сохранить данные с FormType и Компонент Http Client , но если форма имеет логический атрибут Я получаю эту ошибку:

Возникла исключительная ситуация при выполнении книги INSERT INTO (isbn, название, описание, автор, публикация_дата, активная цена) ЗНАЧЕНИЯ (?,?,?,?,?, ?,?) 'с params ["ISBN 2-7654-1005-8", "Испытательная книга", "Lorem ipsum dolor sit amet, adecistur aditiscing концентрат, sed do eiusmod tempor incididunt u", "Alex", "2020- 01-10 16:43:53 ", null, null]:

SQLSTATE [23000]: нарушение ограничения целостности: 1048 Столбец '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()
    ));
}

1 Ответ

0 голосов
/ 14 января 2020

Я решил это так:

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

    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...