У меня есть форма, и я могу просто создать новую запись в моей базе данных.
Теперь я хотел бы обновить эту запись той же самой формой, поэтому я загружаю форму с моей сущностью из базы данных..
В этой форме есть поле с именем 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....
}