MaksimSa
@MaksimSa
Ломаю стены

Как передать значения в form symfony2?

Добрый день, не могу понять как создать отдельно форму symfony.
Вот собственно код обычной формы без создания Form файла в контроллере:
//Находим id_user
        $id_user= $this->get('security.context')->getToken()->getUser()->getId();
        $ems_select = $this->getDoctrine()->getEntityManager();

        //Задаем default values
        $donut = new Donut();
        $donut->setIdServer(1);
        $donut->setSum(1);
        $donut->setDate(new \DateTime);

        //Создаем форму
        $form = $this->createFormBuilder($donut)
            ->add('sum','integer', array('label' => 'Количество шариков'))
            ->add('id_server', 'entity', array(
                'label' => 'Выберите ваш сервер',
                'attr' => array('class' => 'browser-default'),
                'required' => false,
                'class'  => 'M4MinecraftBundle:Mc_server',
                'query_builder' => function(EntityRepository $ems_select) use($id_user){
                    return $ems_select->createQueryBuilder('s')
                        ->where('s.id_user IN (:id_user)')
                        ->setParameter('id_user', $id_user);},
                'property'=> 'name'
            ))
            ->getForm();

В контроллере все это работает нормально. Но при переходе на отдельный файл возникает сразу несколько вопросов:
1.Я не знаю как передать форме $id_user;
2. Я не знаю как выполнить запрос к базе данных, используя $id_user;
2.Я не знаю как установить в форме default values;
Ошибки:
1. Если вставить
$id_user= $this->get('security.context')->getToken()->getUser()->getId();
в
public function buildForm(FormBuilderInterface $builder, array $options)
{}

То возникает ошибка:
Attempted to call an undefined method named "get" of class "\FormType".
Did you mean to call e.g. "getName" or "getParent"?
А передавать через array $options не получается, он не понимает идентификатор.
2.При включении
$ems_select = $this->getDoctrine()->getEntityManager();

выдает
Attempted to call an undefined method named "getDoctrine" of class "M4\MinecraftBundle\Form\DonutType".
Пробовал писать в FormType
use Doctrine\ORM\EntityRepository;

Не помогает.
Как сделать так, чтобы эту форму можно было создать в отдельном файле и таких ошибок не было?
  • Вопрос задан
  • 1138 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы