Forms Symfony2表单中的意外类型异常

Forms Symfony2表单中的意外类型异常,forms,symfony,Forms,Symfony,我有一个实体,看起来像这样: class Person { protected $name; public function setName($name) { $this->name = $name; } public function getName() { if(empty($this->name)) { return ''; } retur

我有一个实体,看起来像这样:

class Person
{
    protected $name;

    public function setName($name)
    {
        $this->name = $name;
    }

    public function getName()
    {
        if(empty($this->name)) {
            return '';
        }
        return $this->name;
    }
}
使用正常的
PersonType
表单:

class PersonType
{
     public function buildForm(FormBuilderInterface $builder, ...)
         $build->add('name', 'text');
     }
}
当我试图通过Symfony的

$this->createForm(newpersonType(),newperson())

我得到一个错误:

第49行的Symfony/Component/Form/Extension/Core/DataMapper/PropertyPathMapper.php中给出了类型为“object、array或empty”、“string”的预期参数

我对几个字段都有这样的定义,我认为Symfony2并不认为空字符串
'
为空。 那我该怎么办?为我表单中的每个字段创建一个模型转换器?。。。 这似乎有点太过分了。有什么建议吗?提前谢谢


对于记录,如果我只是在未设置时返回空值,例如
return$this->name$this->name
是否为空,错误将消失,表单将按预期正确呈现。

是否应该这样工作:

public function getName()
{
    if(empty($this->name)) {
       $this->name('');
    }
    return $this->name;
}

我最终没有返回空字符串,而是让它返回空字符串以使其正常工作


相反,我使用了Symfony2的
empty_data

您能提供有关此错误的更多详细信息吗?@bartek当然,已编辑。因此,即使您在
buildForm
方法中使用了“Name”(而不是“Name”)字段,也会呈现表单?在google中复制/跳过您的错误,得到了这一点,您似乎应该为表单设置一个默认选项,告诉他他在和你的个人课一起工作。@bartek没有拼写错误,但是是的,尽管我从来没有试过这么做。当然,在提交表单后,它将无法处理这些信息。:)哈哈哈,你让我开心了:)不幸的是,不。我认为我不允许有空字符串。这很奇怪,因为我不知道为什么我可以有字符串,只是不能有空字符串。编辑:事实上,我收回这句话。我可以在处理表单之后,但不能在提交表单之前使用字符串。