我正在尝试输出一个选择(选择)列表,其值来自相关实体。在 Flight 实体中,与 Airport 实体存在多对一的关系。Airport 实体具有多个属性,例如城市、国家/地区、codeIata。现在,这是创建类型的方式:
$builder->add('origin', 'entity', array('label' => 'Origin Airport', 'class' => 'FlightcaseBookingBundle:Airport', 'property' => 'codeIata'));
这很好用,它会输出一个带有Airport->codeIata作为选项标签和Airport->id作为值的元素,如下所示:
<option value="1234">CDG</option>
但我真正想要的是显示 2 个字段串联的选项列表选项,即 IATA 代码,然后是机场名称,例如
<option value="1234">CDG - Paris Charles de Gaulle</option>
因此,我在我的 Airport 实体中创建了一个名为 getLongName() 的新方法,它为我完成了这项工作。然后我用 longName 替换了codeIata的属性值。
这基本上就是我想要的。但对我来说,这似乎很老套,而且不可取,因为实体类严格意味着定义对象本身。最重要的是,我也不能以这种方式向 getLongName 方法发送任何参数(比如 $maxlength 左右)。那么操作元素中显示的内容的正确方法是什么?我需要创建一个 Transformer 类来执行此操作,还是有更简单的方法?