0
我有一個這樣的形式定義(用於演示目的):與靜態記錄實體表單字段
$builder->add('field', 'entity', [
'class' => EntityA::class,
'query_builder' => function($repo) {
return $repo->createQueryBuilder('e')
->andWhere('e.active = 1');
}
]);
這確保了只有活動記錄可以在下拉字段採用這種形式時,可以選擇。
這導致了這種情況:當我使用上面的表單定義編輯一個實體,並且該實體被指定爲非活動的EntityA
時,它將不會出現在下拉字段中。當我點擊保存按鈕時,它將獲得分配的第一個激活(如果有的話)EntityA
。此外,該表單將向用戶建議分配一個不同的Entity
比實際情況。
正確的方法是表單顯示所有活動記錄和當前分配的一個非活動記錄。
我看着表單事件監聽器,但這似乎過於複雜。此外,擴展僅用於編輯的表單可能是一件事情,但對我來說似乎不是「正確的方式」。
如何解決此問題,最好不使用第三方軟件包?
如果我把這個代碼放到'buildForm'方法,我總是得到'null'的'$ object'。此時執行的時間太早。 – Joshua
當FormEvents :: POST_SET_DATA事件事件被觸發時添加字段(http://symfony.com/doc/current/components/form/form_events.html) –
謝謝。我使用了'PRE_SET_DATA'和自定義字段類型的組合來掃描我的表單並更改'query_builder'。 – Joshua