Symfony 2创建一个包含2个属性的实体表单字段

时间:2012-10-25 14:14:59

标签: php symfony symfony-forms

我正在使用 symfony2 并且有一个表单来保存一个用户与某些规则的关系。这些规则由公司的管理员用户设置。在这种形式中,在我选择要更新的用户之后,我必须选择该用户有权限的规则。

问题是我可能有多个具有相同名称的规则(它是另一个实体),但值不同。所以,当我构建selectbox时,我必须显示名称和值,如:

  1. 物品数量 - 10
  2. 物品数量 - 20
  3. 项目的价值 - 200
  4. 项目的价值 - 500
  5. 但是现在我可以使用下面的代码显示没有“ - $ 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()

    有没有办法做到这一点?

1 个答案:

答案 0 :(得分:32)

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

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

并修改property表单选项:

'property' => 'childEntity.uniqueName',

您也可以省略property选项,并以相同的方式定义__toString()方法,以便不在每种格式中重复设置property选项。