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

问题描述 投票:-1回答:2

好的,这是一个例子。

我已经建立了一个测试项目。现在我有一个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的表单。但现在我想知道“连接”的位置。

symfony
2个回答
0
投票

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

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

像那样:

DatabaseInteraction.php

0
投票

它主要是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查找所选实体上可访问的字段。

© www.soinside.com 2019 - 2024. All rights reserved.