在我的应用中有用户,这些付款有货币(用户 - >>付款<< ; - 货币)。
管理员可以修改任何用户。我的用户表单包含付款清单(收藏)以及添加其他付款(docs)的可能性。将付款添加到此列表时,您可以选择其货币。我想根据当前用户表单的用户实体来限制此列表。
所以我将此eventListener(docs)添加到 Payment的表单中。问题是它仅适用于付款的实体,而不适用于付款的原型,因为$event->getData()
会导致null
原型。
class PaymentType extends AbstractType {
public function buildForm(FormBuilderInterface $builder, array $options)
{
...
$builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
if ($payment = $event->getData()) {
$event->getForm()->add('currency', 'entity', array(
'class' => 'AcmeBundle\Entity\Currency',
'property' => 'code',
'choices' => $custom_list_of_currencies_which_depends_on_underlying_user
));
}
});
}
}
此时我在列表中修改了现有的 Payment ,我看到了受限制的货币列表,但是当我添加新的付款时,我看到货币的完整列表
有什么想法吗?