[英]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.