我在 Symfony 5 中遇到 EntityType 类的问题,我找不到一种方法让表单行返回 astring
而不是实体 ( MyEntity
)。这就是我作为表单构建器的一部分的基本内容:
$builder->add('myEntity', EntityType::class, [
'class' => MyEntity::class,
'placeholder' => "(Please select an option.)",
'choice_label' => 'name'
])
我的目的是让本场返回name
的MyEntity
选择,而不是整个实体(所以,确切相同的值'choice_label'
)。我已经尝试添加一个'choice_value' => 'name'
属性(带有一个'mapped' => false
属性,在这种情况下显然是必要的),但无济于事。更准确地说,表单行开始返回null
而不是string
任何实体的 a 。
我怎样才能实现我的目标?
事实证明,定义__toString()
功能,在MyEntity
为返回name
场(完全相同的方式,你会定义getName()
)固定它,我现在没有错误外加一个成功提交到数据库。
public function __toString() {
return $this->name;
}
(如果你想知道为什么只是这个添加而不是其他任何修复它,这是因为__toString
默认情况下已经在一些预先存在的实体相关代码中以更简单和自定义的方式表达实体,如果我不是错了。现在我使这个函数可用,它会去它并安全地假设当我的实体可能需要以更简单的 [string] 格式表示时,__toString
应该被调用以“转换”MyEntity
为有意义的字符串,例如它name
。我想这就是说,例如,您不会通过所有内部零件来指代汽车,而只是通过其型号来指代汽车。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句