我尝试在我的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类型提示并仍然使用表单包?
谢谢!
答案 0 :(得分:3)
使用php 7.1,你可以用这种方式指定它:
public function getName() : ?string {
以这种方式指定返回值是字符串或null,但仅限于php 7.1