Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Symfony自定义表单选择值_Php_Symfony - Fatal编程技术网

Php Symfony自定义表单选择值

Php Symfony自定义表单选择值,php,symfony,Php,Symfony,我使用的是Symfony3,我希望能够通过组合两个字段(如名称和城市)来显示自定义选择值。因此,本质上,在选择框中,它将显示以下内容: ------------------------------------ John Smith - Denver ------------------------------------ Abe Lincoln - Washington D.C ------------------------------------ George Washingto

我使用的是Symfony3,我希望能够通过组合两个字段(如名称和城市)来显示自定义选择值。因此,本质上,在选择框中,它将显示以下内容:

 ------------------------------------
 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();
}