我正在使用 symfony2 并且有一个表单来保存一个用户与某些规则的关系。这些规则由公司的管理员用户设置。在这种形式中,在我选择要更新的用户之后,我必须选择该用户有权限的规则。
问题是我可能有多个具有相同名称的规则(它是另一个实体),但值不同。所以,当我构建selectbox时,我必须显示名称和值,如:
但是现在我可以使用下面的代码显示没有“ - $ 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()
。
有没有办法做到这一点?
答案 0 :(得分:32)
是的,在实体类中定义getUniqueName()
方法,如:
public function getUniqueName()
{
return sprintf('%s - %s', $this->name, $this->value);
}
并修改property
表单选项:
'property' => 'childEntity.uniqueName',
您也可以省略property
选项,并以相同的方式定义__toString()
方法,以便不在每种格式中重复设置property
选项。