Добрый день, не могу понять как создать отдельно форму 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;
Не помогает.
Как сделать так, чтобы эту форму можно было создать в отдельном файле и таких ошибок не было?