Search code examples
symfonydoctrinesymfony-2.5symfony-2.6

Symfony-2, inserting user in buildForm() function


I have two entities (User and Project), with generated CRUD options. Relation between entities is OneToMany bidirectional (user 1 - * project). In project/new, CRUD generated drop-down list for Users, but I want to set logged User automatically, without picking it from drop-down list.

Here is ProjectType/buildForm() function:

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

Can I set logged User as Project creator in buildForm() (from session?, database?), or somewhere else? Thanks.


Solution

  • Yes in your Controller you probably have something like this:

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

    You can add the following line inbetween the lines above:

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

    Then your user is preselected in the form.

    If you want to hide it you can use $form->remove('user'); and set the user like mentioned in createAction and updateAction after $form->handleRequest($request);