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