我有一个看起来像这样的实体:
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
是否为空,则错误消失并且表单按预期正确呈现
答案 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