私の Symfony アプリのエンティティには、ID ではなくシリアル番号に基づく関連付けがあります。関連付けは次のようになります。
/**
* @var Department
*
* @ORM\ManyToOne(targetEntity="Department")
* @ORM\JoinColumn(name="department_serial", referencedColumnName="serial")
*/
protected $department;
このエンティティのフォームを作成するとき、次のように部門フィールドを追加します。
->add('department', null, array
(
'label' => 'Choose department',
'required' => true,
//some more...
))
問題は、フォームがレンダリングされると、間違った html リスト項目の値になってしまうことです。値は実際の部門 ID ではないため、項目は自動採番されているようです。また、私の目標であるシリアル番号にも対応していません。これは私が得るものの例です:
<select id="someId" name="form[someName]">
<option value="0">Department A</option>
<option value="1">Department B</option>
<option value="2">Department C</option>
<option value="3">Department D</option>
<option value="4">Department E</option>
<option value="5">Department F</option>
</select>
上記のリスト項目の値は、各部門のシリアル番号である必要があります。そうでないため、エンティティとその部門の間のリンクが失われているようで、フォームを保存できません。(部署の選択が必要で、通し番号が[0、1、2、3、4、5]の部署は存在しません。)
したがって、私の質問は次のとおりです。関連付けられたエンティティのどのプロパティをhtmlリストの値として使用する必要があるかをフォームタイプでどのように示すことができますか? 各リスト項目のラベルを変更する「プロパティ」というオプションがあることは知っていますが、その値を変更する方法はありますか?