Symfony 4 - 创建表单 - 对象为空
Symfony 4 - Creation form - Object is null
- Symfony 4.3
- 自定义用户提供商(无 FOS)
- PHP 7.1 / MariaDB 10.2
- Wamp 本地服务器
我已经实现了用户编辑和用户删除功能。它工作完美!
现在我想在我的网站上创建一个注册表格,但我不明白这个错误!
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()
]);
}
真不懂
- 我的
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()
。有关详细信息,请参阅 documentation。
- Symfony 4.3
- 自定义用户提供商(无 FOS)
- PHP 7.1 / MariaDB 10.2
- Wamp 本地服务器
我已经实现了用户编辑和用户删除功能。它工作完美! 现在我想在我的网站上创建一个注册表格,但我不明白这个错误!
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()
]);
}
真不懂
- 我的
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()
。有关详细信息,请参阅 documentation。