Symfony 4-创建表单-对象为空 Symfony 4.3 自定义用户提供商(无FOS) PHP 7.1/10.2 Wamp本地服务器

Symfony 4-创建表单-对象为空 Symfony 4.3 自定义用户提供商(无FOS) PHP 7.1/10.2 Wamp本地服务器,symfony,symfony4,Symfony,Symfony4,我已经让用户编辑和删除功能。它工作完美! 现在我想在我的网站上创建一个注册表单,但我不理解这个错误 App\Entity\User::getFirstname()的返回值必须是字符串类型,返回null 例外情况: 在\src/Entity/User.php中(第100行) 以下是my UserController的摘录: /** * @Route("/users/add", name="app_users_add") */ public function addUser(Request $req

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

App\Entity\User::getFirstname()的返回值必须是字符串类型,返回null

例外情况:

在\src/Entity/User.php中(第100行)

以下是my 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()
  ]);
}
我真的不明白

  • My
    UserEntity
    正在控制器中使用我的编辑方法
  • 我的模板
    user/add.html.twig
    很好(即使我让它为空)
  • 我的
    UserType
    表单生成器工作得很好(我使用它来编辑用户)
您应该添加

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()
。有关更多信息,请参阅

你能出示你的登记表吗?如果我听从你的建议,在我提交表格时也会出现同样的错误。它有效!顺便说一下,我必须对所有实体getter执行相同的操作。php文档解释了为什么
解决了这个问题:
允许返回值为null。
public function getFirstname(): ?string
    return $this->firstname;  
}