【问题标题】:Symfony forms php7 type hintsSymfony 形成 php7 类型提示
【发布时间】: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 symfony php-7


【解决方案1】:

使用 php 7.1 你可以这样指定:

public function getName() : ?string {

通过这种方式,您可以指定返回值是字符串或 null,但仅来自 php 7.1

【讨论】:

    猜你喜欢
    • 2016-09-07
    • 2016-06-10
    • 2018-01-25
    • 2021-05-11
    • 2018-07-27
    • 2017-04-03
    • 1970-01-01
    • 2020-01-24
    • 2019-03-08
    相关资源
    最近更新 更多