如何从子表单中获取父Symfony3表单的值?

snoop168

我有一个带有嵌入式表单的父表单。在嵌入式(子)表单中,我希望创建一个下拉字段,其中包含从数据库中查询的另一个实体的选项。作为查询的一部分,我需要引用父实体,但不确定如何从子表单类访问该父对象。

例如,父母是一个$subscriber实体。在我的情况下,父表单实际上不显示与订阅者相关的任何属性,只是允许您添加或删除子实体表单。每个子表单都必须具有如上所述的字段,但是选择必须限于订户已经与之关联的值。

但这是我的问题所在。如何$subscriber从子表单中使用的代码访问以下变量?:

$builder->add('otherEntity', EntityType::class, array(
    'class' => "AppBundle:YetAnotherEntity",
    'label' => "Other Entity",
    'query_builder' => $this->manager->getRepository("AppBundle:OtherEntity")->getOtherEntityBySubscriber($subscriber)
 ));

依次在我的存储库中调用此函数:

public function getOtherEntityBySubscriber($subscriber)
{
    return $this->getEntityManager()
        ->createQuery(
            'SELECT o FROM AppBundle:OtherEntity o JOIN n.subscriberOtherEntity so WHERE o.subscriber = :subscriber'
        )
        ->setParameter("subscriber", $subscriber)
        ->getResult();
}

在jbafford的建议之后:我尝试了您的第一个选择,但是我的问题是我的父窗体调用了CollectionType :: class类型而不是我的自定义类型...,因为我计划制作一个可以添加多个子项的窗体。我无法将任何自定义选项传递给CollectionType。我是否需要扩展CollectionType以使自己的Type能够接受额外的选择?

我的父表单如下所示:$ builder-> add('child',CollectionType :: class,array(“ entry_type” => ChildType :: class,“ allow_add” => true,“ by_reference” => false,“ allow_delete “ => true)); 如果我在上面添加订户作为选项,我会得到一个错误,基本上说它不是一个有效的选项。我开玩笑地让我的ChildType扩展了CollectionType,但是我不认为这是我需要做的,并且收到一条错误消息:
表单的视图数据应该是AppBundle \ Entity \ Child类的实例,但是是一个实例Doctrine \ ORM \ PersistentCollection类。您可以通过设置“ data_class”来避免此错误

我想我需要另一个类来扩展CollectionType只是为了放入上述add方法中,但我仍然希望我的输入类型为ChildType :: class

杰福德

因为这$subscriber是父表单的主题,所以您可以执行此操作的一种方法是将$subscriberas as form选项传递给子表单。

您可以在子级中定义如下:

class ChildForm extends AbstractType
{
    public function buildForm(FormBuilderInterface $builder, array $options)
    {
        $subscriber = $options['subscriber'];
    }

    public function configureOptions(OptionsResolver $resolver)
    {
        $resolver->setRequired(['subscriber']);
    }
}

然后从父级传递。

如果您的父表单是根表单,则可以$subscriber退出$options['data']

        $builder->add('otherEntity', ChildForm::class, [
            'subscriber' => $options['data'],
        ],

如果不是,则可能需要使用事件侦听器来获取表单数据:

    $builder->addEventListener(FormEvents::PRE_SET_DATA, function (FormEvent $event) {
        $subscriber = $event->getData();
        $form = $event->getForm();

        $form->add('otherEntity', ChildForm::class, [
            'subscriber' => $subscriber,
        ]);
    });

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从子表单向父表单发送“消息”?

来自分类Dev

从子表更新父表单元格值

来自分类Dev

从子表单中引用主表单

来自分类Dev

提交symfony3表单时如何在子实体上设置父ID

来自分类Dev

如何从子组件获取表单中的数据并将其传递回父组件?

来自分类Dev

在 Symfony3 中自定义选择表单类型

来自分类Dev

Symfony2-以嵌套形式从子表单中添加或删除字段

来自分类Dev

Symfony3登录表单:如何在security.yml中设置防火墙参数?

来自分类Dev

如何在 symfony3 中从相同的表单访问 2 个表?

来自分类Dev

Symfony3错误登录表单

来自分类Dev

Symfony3:验证嵌套(可选)表单

来自分类Dev

如何从电子表格中获取对象值以粘贴到html输入表单

来自分类Dev

如何从子组件中获取输入以在表单中注册?

来自分类Dev

子表单中父表单中的触发方法

来自分类Dev

在jsp中提交子表单后如何返回父表单

来自分类Dev

如何在子表单上更改父表单的webControl源?

来自分类Dev

(Symfony 4 表单类型)如何根据表单上的 <select> 值使整个子表单成为必需/不需要?

来自分类Dev

如何使用Room从子表中获取父外键的数量

来自分类Dev

如何根据父表中的值从子表中选择项目?

来自分类Dev

从子线程关闭父表单

来自分类Dev

从 Doctrine 实体 (Symfony3) 中获取所有值

来自分类Dev

如果未选中父级(角),如何取消选中子表单组值?

来自分类Dev

如何在模板中获取表单值

来自分类Dev

如何在handlechange中获取表单值?

来自分类Dev

如何从表单中获取 RadioButton 值?

来自分类Dev

在子表单上使用父表单的变量?

来自分类Dev

内联表单集-如何设置子表单的默认值

来自分类Dev

根据选择从子表单保存报告

来自分类Dev

如何为“创建”和“编辑”操作显示表单的特定字段 - Symfony3

Related 相关文章

  1. 1

    如何从子表单向父表单发送“消息”?

  2. 2

    从子表更新父表单元格值

  3. 3

    从子表单中引用主表单

  4. 4

    提交symfony3表单时如何在子实体上设置父ID

  5. 5

    如何从子组件获取表单中的数据并将其传递回父组件?

  6. 6

    在 Symfony3 中自定义选择表单类型

  7. 7

    Symfony2-以嵌套形式从子表单中添加或删除字段

  8. 8

    Symfony3登录表单:如何在security.yml中设置防火墙参数?

  9. 9

    如何在 symfony3 中从相同的表单访问 2 个表?

  10. 10

    Symfony3错误登录表单

  11. 11

    Symfony3:验证嵌套(可选)表单

  12. 12

    如何从电子表格中获取对象值以粘贴到html输入表单

  13. 13

    如何从子组件中获取输入以在表单中注册?

  14. 14

    子表单中父表单中的触发方法

  15. 15

    在jsp中提交子表单后如何返回父表单

  16. 16

    如何在子表单上更改父表单的webControl源?

  17. 17

    (Symfony 4 表单类型)如何根据表单上的 <select> 值使整个子表单成为必需/不需要?

  18. 18

    如何使用Room从子表中获取父外键的数量

  19. 19

    如何根据父表中的值从子表中选择项目?

  20. 20

    从子线程关闭父表单

  21. 21

    从 Doctrine 实体 (Symfony3) 中获取所有值

  22. 22

    如果未选中父级(角),如何取消选中子表单组值?

  23. 23

    如何在模板中获取表单值

  24. 24

    如何在handlechange中获取表单值?

  25. 25

    如何从表单中获取 RadioButton 值?

  26. 26

    在子表单上使用父表单的变量?

  27. 27

    内联表单集-如何设置子表单的默认值

  28. 28

    根据选择从子表单保存报告

  29. 29

    如何为“创建”和“编辑”操作显示表单的特定字段 - Symfony3

热门标签

归档