17

我正在使用symfony2并有一个表单来保存一个用户与某些规则的关系。这些规则由公司的管理员用户设置。在这个表单中,当我选择了一个用户进行更新后,我必须选择这个用户拥有哪个规则的权限。

问题是我可能有不止一个具有相同名称的规则(它是另一个实体),但值不同。因此,当我构建选择框时,我必须显示名称和值,例如:

  1. 物品数量 - 10
  2. 物品数量 - 20
  3. 物品价值 - 200
  4. 物品价值 - 500

但现在我可以使用下面的代码显示没有“- $value”:

$form = $this->createFormBuilder()->add('myinput', 'entity', array(
                    'class' => 'myBundle:Rule',
                    'property' => 'childEntity.name',
                    'label' => 'Filas Permitidas',
                    'expanded' => false,
                    'multiple' => true,
                    'choices' => $this->getDoctrine()
                            ->getRepository('MyBundle:Rule')
                            ->findAll(),
                    'required' => true,
                ))->getForm();

因此,作为我想要获得$myEntity->getChildEntity()->getName()的财产和$myEntity->getValue().

有没有办法做到这一点?

4

1 回答 1

32

getUniqueName()是的,在实体类中定义一个方法,例如:

public function getUniqueName()
{
    return sprintf('%s - %s', $this->name, $this->value);
}

并编辑property表单选项:

'property' => 'childEntity.uniqueName',

您也可以省略property选项并以__toString()相同的方式定义方法,以免property在每个表单中重复选项的设置。

于 2012-10-25T14:28:34.410 回答