如何根据基础数据

时间:2015-05-28 10:29:30

标签: php symfony

在我的应用中有用户,这些付款货币(用户 - >>付款<< ; - 货币)。

管理员可以修改任何用户。我的用户表单包含付款清单(收藏)以及添加其他付款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 ,我看到了受限制的货币列表,但是当我添加新的付款时,我看到货币的完整列表

有什么想法吗?

0 个答案:

没有答案