関連エンティティからの値を使用して、選択 (選択) リストを出力しようとしています。Flight エンティティには、Airport エンティティとの多対 1 の関係があります。Airport エンティティには、city、country、codeIata などのいくつかのプロパティがあります。現在、これが Type の作成方法です。
$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() という新しいメソッドを作成しました。次に、 codeIata のプロパティの値を longName に置き換えました。
これは本質的に私が望んでいたことを行います。しかし、エンティティクラスはオブジェクト自体を定義することを厳密に意図しているため、これはハックで望ましくないように思えます。その上、この方法でも getLongName メソッドに引数を送信できません ($maxlength など)。では、要素に表示されるものを操作する適切な方法は何でしょうか? これを行うには Transformer クラスを作成する必要がありますか、それとももっと簡単な方法がありますか?