Как получить хранилище доктрины в классе типа формы в Symfony2? - PullRequest
5 голосов
/ 15 марта 2012
$repository = $this->getDoctrine()->getRepository('ParabolaEntityBundle:ProjectAllocation');
        $query = $repository->createQueryBuilder('p')
                ->where('p.startDate < :sdate and p.employee = :emp and p.endDate > :edate')
                ->setParameter('sdate', date('Y-m-d', time()))
                ->setParameter('edate', date('Y-m-d', time()))
                ->setParameter('emp', $employee->getId())
                ->getQuery();
        $projectAllocate = $query->getResult();

как я могу использовать приведенный выше код в классе FormType. Я использую этот запрос для создания массива для выбора типа в построителе форм.

1 Ответ

6 голосов
/ 15 марта 2012

Я думаю, вы должны использовать тип entity, который имеет опцию query_builder.

Эта ссылка:

http://symfony.com/doc/current/reference/forms/types/entity.html

Описывает, как это сделать..

Если по какой-то причине вы действительно не хотите использовать тип entity, вы всегда можете получить данные в контроллере и передать их через конструктор FormType, который немного быстр 'n'грязно, но должно работать нормально ...

Контроллер:

$this->createForm(new MyFormType($results_from_qb), $form_data );

FormType:

public function __construct($results_from_qb){
    $this->results_from_qb = $results_from_qb; // store it into class member field to be used latter in buildForm method
}
...