formBuilder - 如何添加实体?

时间:2015-12-26 09:15:44

标签: symfony formbuilder

我有两个班级:班级和学生。每个班级都包含一个或多个学生。

在我的表单(创建学生)中,我想要一个包含所有可用课程的滚动选择器,以便将我的学生放在课堂上。

我已经这样做了:

/**
 * @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

1 个答案:

答案 0 :(得分:0)

在您提交的文档之后,您需要重写字段类型:

<强> 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');
        }))
;