繁体   English   中英

Symfony 3-EntityType-呈现数据库值

[英]Symfony 3 - EntityType - Rendering database value

我在Symfony 3的formType中使用EntityType。当我以新形式显示它时,一切工作正常,choicetype liste包含数据库中的所有值。 但是,当我从数据库中加载现有数据时,选择列表不会从数据库中加载值,它会显示餐垫。 我已经在数据库中签入并保存了值。 我的表格看起来像这样

->add('tester', EntityType::class, array(
                'class' => 'MyBundle:TesterList',
                'query_builder' => function (EntityRepository $er) {
                    return $er->createQueryBuilder('u')
                    ->orderBy('u.name', 'ASC');
                },
                'choice_label' => 'name',
                'choice_value' => 'name',
                'required' => true,
                'placeholder' => 'Select a tester',
                ))

为了进行测试,我尝试将EntityType更改为带有2的列表的ChoiceType,它可以正常工作。 我不知道EntityType是什么问题。

编辑:该字段以我的形式显示,如下所示:

 {{ form_label(formHydraulicTest.testHeader.tester,'Tester' | trans) }}
 {{ form_widget(formHydraulicTest.testHeader.tester) }} 

实体TesterList与其他实体没有任何关系。 这只是一个名称列表。

当我尝试保存EntityType时,它返回一个TesterList对象,因此我将此函数添加到TesterList Entity中。

public function __toString() {
    return $this->name;
}

这样,我仅保存测试人员的姓名,而不保存指向实体的链接。

通用EntityRepository可能仅通过创建一个命名的QueryBuilder'u'不知道要获取哪个实体。 您可能需要实际的TesterList存储库。 因此,您的代码将如下所示:

->add('tester', EntityType::class, array(
                'class' => 'MyBundle:TesterList',
                'query_builder' => function (TesterListRepository $er) {
                    return $er->createQueryBuilder('u')
                              ->orderBy('u.name', 'ASC');
                },
                'choice_label' => 'name',
                'choice_value' => 'name',
                'required' => true,
                'placeholder' => 'Select a tester',
                ))

当然,将TesterListRepository添加到表单类顶部的use语句中。

我找到了一种使它起作用的方法,我只是用细枝选择了默认值。 我已经这样更新了

 {{ form_label(formHydraulicTest.testHeader.tester,'Tester' | trans) }}
                    {{ form_widget(formHydraulicTest.testHeader.tester, { value : formHydraulicTest.testHeader.vars.value.tester}) }} 

我不确定这是否是解决我的问题的最佳方法,但是它有效;)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM