我有一个user
表和article
表。使用Symfony生成的表单创建新文章时,用户 dropdown/select显示数字(用户标识号码,如1,2,3等)而不是用户名。Symfony sfWidgetFormDoctrineChoice显示ID号而不是实际值
我明显可以用自定义覆盖表单来确保这个select元素填充用户名而不是他们的ID号,但我想到Symfony可能已经想出了这一个,并且只有一些东西我错过了...
它应该默认显示名称还是我做错了什么?
我有一个user
表和article
表。使用Symfony生成的表单创建新文章时,用户 dropdown/select显示数字(用户标识号码,如1,2,3等)而不是用户名。Symfony sfWidgetFormDoctrineChoice显示ID号而不是实际值
我明显可以用自定义覆盖表单来确保这个select元素填充用户名而不是他们的ID号,但我想到Symfony可能已经想出了这一个,并且只有一些东西我错过了...
它应该默认显示名称还是我做错了什么?
实际上,它会调用模型的__toString()方法。您可以在模型中覆盖它以返回任何字符串值。
class User extends BaseUser {
public function __toString() {
return $this->getUsername();
}
}
或者,您可以将'方法'选项传递给选择小部件。例如:
新sfWidgetFormDoctrineChoice(阵列( '模型'=> '用户', '方法'=> 'getUsername'))
我自己想出了这个问题。基本上如果你有一个名为name
的表格列,那么Symfony会自动使用这个字段填充下拉菜单。我碰巧使用username
。非常酷的设计理念,但我不记得在Symfony文档中阅读它。好吧。
我在哪里声明'getUsername'方法?在表单类中? –
如果你的模型用户有一个列用户名,getUsername()将返回该用户名。 – Gerry