Php Symfony自定义表单选择值
我使用的是Symfony3,我希望能够通过组合两个字段(如名称和城市)来显示自定义选择值。因此,本质上,在选择框中,它将显示以下内容:Php Symfony自定义表单选择值,php,symfony,Php,Symfony,我使用的是Symfony3,我希望能够通过组合两个字段(如名称和城市)来显示自定义选择值。因此,本质上,在选择框中,它将显示以下内容: ------------------------------------ John Smith - Denver ------------------------------------ Abe Lincoln - Washington D.C ------------------------------------ George Washingto
------------------------------------
John Smith - Denver
------------------------------------
Abe Lincoln - Washington D.C
------------------------------------
George Washington - Washington D.C
------------------------------------
etc...
------------------------------------
这是我的表格
$builder->add('person', EntityType::class, array(
'required'=>false,
'class'=>'AppBundle:Person',
'choice_label'=>'name',
'label'=>'Choose the person',
'empty_data'=>null,
'placeholder'=>"None",
'query_builder' => function(EntityRepository $repository) {
return $repository->createQueryBuilder('p');
}
));
正如上面所说,choice_标签也可以是可调用的,它提供了两个选项
为组合值创建一个getter,该值应表示如下实体:
class Person {
// ...
public function getComposedName() {
return $this->name . ' - ' . $this->city;
}
}
然后在表单中,将选择_标签设置为“composedName”。
请注意,它是composedName,而不是getComposedName,因为Symfony将在这里使用,它还将尝试使用getter getComposedName获取值
如果您在其他地方需要此值,这可能很有用
如果仅在此特定表单中需要此函数,则可以将匿名函数直接传递给表单:
'choice_label'=> function($person) {
return $person->getName(). ' - ' . $person->getCity();
}