2014-12-17 2 views
1

У меня есть два объекта (Пользователь и проект) с генерируемыми параметрами CRUD. Связь между объектами - двунаправленная OneToMany (пользователь 1 - * проект). В проекте/новом CRUD генерируется раскрывающийся список для Пользователей, но я хочу, чтобы автоматически регистрировал пользователя, не выбирая его из выпадающего списка.Symfony-2, вставляющий пользователя в функцию buildForm()

Вот функция ProjectType/buildForm():

public function buildForm(FormBuilderInterface $builder, array $options) 
{ 
    $builder 
     ->add('projectTitle') 
     ->add('user') 
    ; 
} 

Можно ли установить зарегистрированный пользователь, как Создатель проекта в buildForm() (от сессии ?, базы данных?), Или где-нибудь еще? Благодарю.

+0

Это недопустимый код Symfony2 (неполные определения полей в построителе). Что вы пробовали? Вы можете иметь пользователя как поле сущности, а затем построить форму, передающую соответствующий объект в качестве значения этого поля. –

+2

@TomaszKowalczyk Действительно, он угадает тип, который работает для строк и чисел и т. Д. –

ответ

5

Да в вашем контроллере вы, вероятно, что-то вроде этого:

$entity = new Project(); 

$form = $this->createEditForm($entity); 

Вы можете добавить следующую строку между ними вышеуказанных линий:

$entity->setUser($this->get('security.context')->getToken()->getUser()); 

Тогда ваш пользователь заранее выбранную форму.

Если вы хотите, чтобы скрыть его, вы можете использовать $form->remove('user'); и указать пользователя, как упомянуто в createAction и UpdateAction после$form->handleRequest($request);

0

Вы можете восстановить объект пользователя в контроллере и отправить его в качестве параметра формы:

$form = $this->createForm(new CustomFormType($user), $entity); 

class CustomFormType extends AbstractType 
{ 
    protected $user; 

    public function __construct($user) { 
     $this->user = $user; 
    } 
} 
Смежные вопросы