Symfony2 еще одна сущность в Formbuilder

У меня проблема / понимание проблемы.

У меня есть 3 таблицы базы данных user, usergroup и user2usergroup

внешние поля: user.id => user2usergroup.user_id user2usergroup.group_id => usergroup.id

Итак, теперь я хочу сгенерировать и отредактировать мой пользовательский объект и получить связь с моим форм-сервером.

Я попробовал некоторые идеи и искал помощи.

Не это острое состояние

контроллер:

/**
 * creates user form
 * @param users $entity
 * @param string $sUrl
 * @return Form
 */
public function createUserForm(users $entity, $sUrl){
    $form = $this->createForm(new userType(), $entity, array(
        'action'    => $this->generateUrl($sUrl),
        'method'    => 'POST',
        'groups'    => $this->getUserGroups()
    ));
    return $form;
}

formbuilder

/**
 * @param FormBuilderInterface $builder
 * @param array $options
 */
public function buildForm(FormBuilderInterface $builder, array $options){
    $groups = $options['groups'];

    $builder
        ->add('enabled','checkbox',array(
                'required'  => false))
        ->add('locked','checkbox',array(
                'required'  => false))
        ->add('username','text',array(
                'required'  => true))
        ->add('email','email',array(
                'required'  => true))
        ->add('password','password',array(
                'required'  => true))
        ->add('roles', 'choice', array(
                    'choices'  => array('ROLE_ADMIN' => 'Admin', 'ROLE_USER' => 'Benutzer'),
                    'required' => true,
                    'multiple' => true
                ))
        ->add('groups','entity',array(
            'class' => 'UniteUserBundle:usergroup',
            'query_builder' => function(EntityRepository $er){
                    return $er->findAll();
                },

        ))
        ->add('save','submit')
        ;

}

Может быть, вы можете помочь мне понять - как получить все группы в форме - как отредактировать пользователя и посмотреть, в каких группах он находится (вид редактирования) - как я могу сохранить группы, выбранные в пользовательской форме, в user2usergroup

Большое спасибо мои друзья =)

1 ответ

Чтобы показать группы, к которым принадлежит пользователь, не сложно:

{% for usergroup in entity.getUserGroups() %}
    <li>{{ usergroup.name }}</li>
{% endfor %}

Редактировать их в форме USER сложнее, так как вы редактируете одного пользователя, но этот пользователь может быть в нулевой, одной или нескольких группах. Это означает, что каждая группа в списке может быть отредактирована и удалена, и вы можете добавить новую группу.

Для этой ситуации вы можете использовать тип поля Коллекция. В этой статье вы можете прочитать шаг за шагом, как его использовать.

Другие вопросы по тегам