Форма Symfony, обновление сущности приводит к неверному типу аргумента - PullRequest
0 голосов
/ 27 декабря 2018

У меня есть форма, и я могу просто создать новую запись в моей базе данных.

Теперь я хотел бы обновить эту запись той же самой формой, поэтому я загружаю форму с моей сущностью из базы данных..

В этой форме есть поле с именем modelBuild, оно nullable и в данный момент пусто, поэтому при загрузке формы в этом поле ничего не остается.

Покаэто просто

Но теперь я пытаюсь обновить запись в базе данных, поэтому отправляю форму, но контроллер вылетает на $form->handleRequest($request);, говоря:

Expected argument of type "string", "NULL" given at property path "modelBuild".

НадеюсьЯ не понимаю, потому что это поле всегда было null, так почему оно теперь жалуется?

если я что-то добавлю в поле, то форма будет отправлена ​​в порядке, а база данных обновлена ​​

ENTITY FIELD:

/**
 * @var string|null
 *
 * @ORM\Column(name="model_build", type="string", length=100, nullable=true)
 */
private $modelBuild;

public function getModelBuild(): ?string
{
    return $this->modelBuild;
}

public function setModelBuild(string $modelBuild): self
{
    $this->modelBuild = $modelBuild;

    return $this;
}

ТИП

->add('modelBuild', TextType::class, array(
  'label' => 'model build',
))

КОНТРОЛЛЕР:

function formHandle(Request $request) {

    if ($this->usermgmt->isLogged()) {

        $update = json_decode($request->request->get('update'));

            $uid = $update[1];

            // get user
            $user = $this->usermgmt->getUser();

            $itemEntity = $em->getRepository(Item::class)->findOneBy([
                'uid' => $uid,
                'user' => $user
            ]);


        // create form
        $form = $this->createForm(NewItemType::class, $itemEntity);

        // handle
        $form->handleRequest($request);

     // rest of controller....
}

1 Ответ

0 голосов
/ 28 декабря 2018

Сеттер ожидает только строку и не принимает нулевое значение.Измените его на ? String

...