Не уверен, что вы уже нашли ответ, но мне просто пришлось немного покопаться, чтобы выяснить это для моего собственного проекта.
Класс формы не настроен для использования Doctrine, как контроллер, поэтому вы не можете ссылаться на Entity таким же образом. То, что вы хотите сделать, это использовать тип поля сущности , который является специальным выбором Тип поля, позволяющим вам загружать опции из сущности Doctrine, как вы пытаетесь это сделать.
Хорошо, так долго рассказывать. Вместо того, чтобы делать то, что вы делаете, чтобы создать поле выбора, сделайте это:
->add('category', 'entity', array(
'class' => 'VendorWhateverBundle:Category',
'query_builder' => function($repository) { return $repository->createQueryBuilder('p')->orderBy('p.id', 'ASC'); },
'property' => 'name',
))
Я не уверен, что вы могли бы поместить функцию query_builder в репозиторий или что-то в этом духе, я как бы круто качаюсь на ходу. До этого момента документация, на которую я ссылался выше, довольно ясно о том, что делать. Я предполагаю, что следующим шагом будет чтение QueryBuilder от Doctrine .
Пока вы там, я думаю, что вы хотите отбросить тот момент, когда встраиваете форму класса,
->add('classroom', new ClassroomType())
Вы, вероятно, не хотите, чтобы люди создавали свои собственные классные комнаты. Если вы этого не сделаете, тогда да.