只是尝试从数据库表中填充选择字段。这只是一个简单的表,其中包含主键列和另一个名为type的列。
仅用于测试,示例表包含:
id type
1 Sample 1
2 Sample 2
3 Sample 3
当我创建表单时:
$builder
->add('account_type', EntityType::class, array(
'class' => 'AppBundle:AppAccountTypes',
'choice_label' => 'type'
));
我的选择下拉菜单只重复第一个条目3次。
<select id="add_account_form_account_type" name="add_account_form[account_type]" class="form-control">
<option value="1">Sample 1</option>
<option value="1">Sample 1</option>
<option value="1">Sample 1</option>
</select>
为了测试,控制器只是使用:
$account = new Account();
$form = $this->createForm(new AddAccountForm(), $account);
return $this->render('account/new.html.twig', array(
'page_title' => 'Create Account',
'form' => $form->createView()
));
Twig模板:
{% extends 'base.html.twig' %}
{% block body %}
<h1>{{ page_title }}</h1>
{{ form_start(form) }}
{{ form_widget(form) }}
{{ form_end(form) }}
{% endblock %}
我在这里缺少什么?
答案 0 :(得分:3)
您可能需要使用以下代码:
$builder
->add('account_type', EntityType::class, array(
'class' => 'AppBundle:AppAccountTypes(Your Entity Class)',
'mapped' => false,
'choice_label' => 'type'
));
因为我在您的代码中看到没有名称为account_type
的字段,所以可能是问题所在。
按以下方式更改您的控制器:
$form = $this->createForm(AddAccountForm::class (Your form class), $account);