Symfony 2.8 Form EntityType返回单值

时间:2017-03-21 21:46:05

标签: symfony doctrine-orm symfony-2.8

只是尝试从数据库表中填充选择字段。这只是一个简单的表,其中包含主键列和另一个名为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 %}

我在这里缺少什么?

1 个答案:

答案 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);