Sonata 2在同一列中显示2个字段

时间:2014-12-01 01:26:22

标签: symfony sonata-admin

我显示索纳塔的列表形式。我有2个字段:firstname,lastname。我想在同一列中显示2个字段。

目前,我正在做

$listMapper->add('firstname', 'text', array('label' => 'First Name'))
           ->add('lastname', 'text', array('label' => 'Last Name'));

如何在不更改实体

的情况下合并两个字段

2 个答案:

答案 0 :(得分:3)

我就是这样做的:

firstnamelastname是User的属性。在您的实体类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'))
}

答案 1 :(得分:0)

您可以使用data transformer

或者(这对我来说似乎不是一个好主意)你可以这样做:

  1. 添加一个非映射字段,称之为fullName。
  2. 添加一个PRE_SUBMIT表单事件侦听器,该侦听器将使用firstName + LastName
  3. 填充fullName
  4. 添加一个POST_SUBMIT表单事件侦听器,然后将fullName解析为lastName和firstName
  5. 坚持实体。