我使用实体作为表单字段类型,并获取此下拉框的选项列表,就像一个魅力。
$builder->add('parent', 'entity', array(
'label' => 'Välj en fastighet för skärmen ',
'class' => 'BizTVContainerManagementBundle:Container','property'=>'name',
'query_builder' => function(EntityRepository $er) use ($parentType, $company) {
return $er->createQueryBuilder('u')
->where('u.containerType = :type', 'u.company = :company')
->setParameters( array('type' => $parentType, 'company' => $company) )
->orderBy('u.name', 'ASC');
},
));
现在,我如何将显示名称自定义为我编码的内容,而不仅仅是
'property'=>'name
我最终想要做的是拥有当前显示的字符串,再加上另一个字符串。我实际上也想在这里得到这个实体的父母的名字,比如:
option_name = $entity->getName() . ' (' . $entity->getParent()->getName() . ')' .
如果我自己构建了表单,平板php html,那将是一件容易的事情,但由于我不喜欢做数百个无聊的小时,我喜欢这些天使用symfony2 =)
欢迎任何欢迎......
答案 0 :(得分:4)
修改您的Container
类并添加一个返回字符串的方法(根据您的喜好):
class Container
{
public function getSelectLabel()
{
return $this->name . '(' . $this->parent->getName() . ')';
}
}
然后将其用作property
(只需将案例替换为_
后跟小写):
$builder->add('parent', 'entity', array(
'label' => 'Välj en fastighet för skärmen ',
'class' => 'BizTVContainerManagementBundle:Container'
'property' => 'select_label',
));
所以getSelectLabel()
变为“select_label”,没有“get”。