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没有拼写错误,但是是的,尽管我从来没有试过这么做。当然,在提交表单后,它将无法处理这些信息。:)哈哈哈,你让我开心了:)不幸的是,不。我认为我不允许有空字符串。这很奇怪,因为我不知道为什么我可以有字符串,只是不能有空字符串。编辑:事实上,我收回这句话。我可以在处理表单之后,但不能在提交表单之前使用字符串。