symfony如何知道从表单中使用哪个实体

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了symfony如何知道从表单中使用哪个实体相关的知识,希望对你有一定的参考价值。

好的,这是一个例子。

我已经建立了一个测试项目。现在我有一个DatabaseInteractionType.php类。

我有这个领域的地方。

           ->add(
                'question',
                TextType::class,
                [
                    'attr' => [
                        'placeholder' => 'Enter your Question',
                        'class' => 'form-control'
                    ],
                    'required' => true
                ]
            )

qazxsw poi取自我的实体,名为qazxsw poi

现在假设我想用另一个实体的另一个字段替换question。 thate定义在哪里?

问的背景:我使用make:form来创建基于Entity的表单。但现在我想知道“连接”的位置。

答案

data_class选项是获取表单类名称的方法。

data_class选项通过将以下内容添加到表单类型类

像那样:

DatabaseInteraction.php
另一答案

它主要是question魔术。如果你的表单中有一个字段// src/Form/TaskType.php use App\Entity\Task; use Symfony\Component\OptionsResolver\OptionsResolver; // ... public function configureOptions(OptionsResolver $resolver) { $resolver->setDefaults([ 'data_class' => Task::class, ]); }PropertyAccess调用的第一个参数),它将用于查看给定的Entity或数组,如果它有一个具有相似名称的字段/属性/键。在此上下文中类似的意思是:(对于对象)一种名为question的方法,一种名为FormBuilder::add()getQuestion的方法,一种名为isQuestion的属性或方法,如果该对象具有定义的魔法hasQuestionquestion,它也将使用它。 (所有这些当然只有,如果是公开的)。这些 - 我相信 - 大多数用于以某种方式解决属性访问的选项。 (详情可在该段开头提供的__get上找到。)

现在,表单类型都有一个选项__call,您可以使用它来设置要查找的不同属性(您甚至可以进入深度,有关详细信息,请参阅link)。

因此,使用Symfony的PropertyAccess组件从Symfony的Form组件中创建“连接”。另一方面,property_path cli命令使用PropertyAccess查找所选实体上可访问的字段。

以上是关于symfony如何知道从表单中使用哪个实体的主要内容,如果未能解决你的问题,请参考以下文章

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

从 Symfony2 表单存储实体不起作用

如何在循环symfony2中为同一实体添加重复的表单

Symfony 表单 query_buider 和实体存储库

在 Symfony2 中检测实体配置错误

从没有表单的URL保存图像(Symfony 3)