Вы можете указать тип поля сущности в качестве опции, например так:
$builder
->add('foo', 'entity', array(
'class' => 'FooBarBundle:Foo',
'query_builder' => function(\Doctrine\ORM\EntityRepository $er) {
return $er->createQueryBuilder('q')->orderBy('q.name', 'ASC');
},
));
EDIT :
На самом деле опция 'class' является единственной обязательной опцией поля. Вы можете прочитать немного больше о типе поля сущности здесь: http://symfony.com/doc/2.0/reference/forms/types/entity.html
Надеюсь, это поможет.
EDIT
В дополнение к обсуждению ниже, вот пример
В контроллере:
$entity = new Foo();
$type = new FooType();
$er = $this->getDoctrine()
->getEntityManager()
->getRepository('FooBarBundle:Foo');
$form = $this->createForm($type, $entity, array(
'foo_repository' => $er
));
Массив $options
передается методу FooType::buildForm()
, поэтому в этом методе должен быть доступен foo_repository
следующим образом:
$er = $options['foo_repository'];