formBuilder - 如何添加实体?

formBuilder - How to add an entity?

我有两个 classes:Class 和学生。每个class包含一名或多名学生。

在我的表单(创建学生)中,我想要一个带有所有可用 class 的滚动选择器,以便将我的学生放在 class。

我已经做到了:

/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options)
{
    $builder
        ->add('name')
        ->add('classe', 'entity', array(
            'required' => true,
            'class' => 'MyCoolBundle:Classe',
            'query_builder' => function(ClasseRepository $cr) {
                return $cr->createQueryBuilder('c')
                    ->orderBy('c.name', 'ASC');
            }))
    ;
}

但结果是:

Could not load type "entity"
500 Internal Server Error - InvalidArgumentException

在文档之后你必须重写字段类型:

Extract from doc

use Symfony\Bridge\Doctrine\Form\Type\EntityType;
// ...

$builder->add('users', EntityType::class, array(
    'class' => 'AppBundle:User',
    'choice_label' => 'username',
));

所以我认为您应该尝试类似的方法:

use Symfony\Bridge\Doctrine\Form\Type\EntityType;
...
...

$builder
    ->add('name')
    ->add('classe', EntityType::class, array(
        'required' => true,
        'class' => 'MyCoolBundle:Classe',
        'query_builder' => function(ClasseRepository $cr) {
            return $cr->createQueryBuilder('c')
                ->orderBy('c.name', 'ASC');
        }))
;