Symfony 4 - 创建表单 - 对象为空

Symfony 4 - Creation form - Object is null

我已经实现了用户编辑和用户删除功能。它工作完美! 现在我想在我的网站上创建一个注册表格,但我不明白这个错误!

Return value of App\Entity\User::getFirstname() must be of the type string, null returned

异常:

in \src/Entity/User.php (line 100)

/**
* @ORM\Column(type="string")
* @Assert\NotBlank()
*/
private $firstname;

public function getFirstname(): string
{
  return $this->firstname; // THIS IS LINE 100
}

以下是我的 UserController 的摘录:

/**
* @Route("/users/add", name="app_users_add")
*/
public function addUser(Request $request, EntityManagerInterface $em): Response
{
  $user = new User();
  $form = $this->createForm(UserType::class, $user); // This line generates the error

  [...]

  return $this->render('user/add.html.twig', [
    'form' => $form->createView()
  ]);
}

真不懂

你应该添加

public function getFirstname(): ?string
    return $this->firstname;  
}

$form = $this->createForm(UserType::class, $user); 产生错误的原因是您将 $user 作为数据传递给表单 UserType。 (这是指文件 App\Form\UserType,对吧?)。由于$user是一个新的对象,这个用户的$firstname还没有定义,所以当你将$user的数据传递给表单时会发生错误。只需删除 $user 参数即可。

如果您没有文件 App\Form\UserType,您可以创建它或在您的控制器中使用 createFormBuilder()。有关详细信息,请参阅 documentation