我显示奏鸣曲的列表形式。我有 2 个字段:名字、姓氏。我想在同一列中显示 2 个字段。
目前,我正在做
$listMapper->add('firstname', 'text', array('label' => 'First Name'))
->add('lastname', 'text', array('label' => 'Last Name'));
如何在不更改实体的情况下将 2 个字段合二为一
这是我的做法:
假设firstname
和lastname
是用户的属性。在您的实体类 User 中,只需添加:
/**
* @return string
*/
public function getFullname()
{
return sprintf("%s %s", $this->getFirstname(), $this->getLastname());
}
然后在您的管理员类中:
/**
* {@inheritdoc}
*/
protected function configureListFields(ListMapper $listMapper)
{
$listMapper
...
->add('fullname', null, array('label' => 'Full Name'))
}
您可以使用数据转换器。
或者(这对我来说似乎根本不是一个好主意)你可以做这样的事情:
- 添加一个非映射字段,将其称为全名。
- 添加一个PRE_SUBMIT表单事件侦听器,该侦听器将使用名字 + 姓氏填充全名
- 添加一个POST_SUBMIT表单事件侦听器,然后将全名解析回姓氏和名字
- 保留实体。