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