Symfony2表单中的UnexpectedTypeException

时间:2014-05-27 14:06:57

标签: forms symfony

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

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(new PersonType(), new Person());

我收到错误:

Expected argument of type "object, array or empty", "string" given in Symfony/Component/Form/Extension/Core/DataMapper/PropertyPathMapper.php at line 49

我有几个字段,我认为Symfony2不会将空字符串''视为空。 那我该怎么办?为表单中的每个字段创建一个模型转换器?... 这看起来有点太多了。有什么建议?提前谢谢!

对于记录,如果我在未设置return $this->name;时返回空值而不检查$this->name是否为空,则错误消失并且表单按预期正确呈现

2 个答案:

答案 0 :(得分:0)

不应该像这样工作:

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

答案 1 :(得分:0)

我最终没有返回一个空字符串并让它返回空值以使其工作。

相反,我使用了Symfony2的empty_data http://symfony.com/doc/current/reference/forms/types/choice.html