【发布时间】:2018-08-23 01:03:01
【问题描述】:
我尝试在我的 symfony 4 项目中使用 symfony 表单,但遇到了以下问题:
如果我在我的实体上使用 PHP 7 类型提示,例如
class User {
private $name;
public function getName() : string {
return $this->name;
}
}
并尝试让它自动填充 symfony 表单包:
class UserType extends AbstractType
{
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', TextType::class);
}
}
控制器:
public function postUserAction(Request $request)
{
$user = new User();
$form = $this->createForm(UserType::class, $user);
$form->handleRequest($request);
}
我从 symfony 收到以下错误:
Type error: Return value of App\Entity\User::getName() must be of the type string, null returned
如果我像这样从实体中删除类型提示:
class User {
private $name;
public function getName() {
return $this->name;
}
}
错误不再存在。我知道表单正在调用getName() 函数,并且由于实体未填充数据,但对象的返回值为null。
有什么方法可以保留 PHP7 类型提示并仍然使用表单包?
谢谢!
【问题讨论】:
-
这仅在 php 7.1 中可用,在 7.0 中不可用
-
当然。而 S4 至少需要 7.1.3。但请帮自己一个忙,直接转到 7.2。 7.1 中有一些奇怪的事情可能已经解决,也可能没有解决。