我遇到了问题/理解问题。
我有3个数据库表 user,usergroup和user2usergroup
外国字段: user.id => user2usergroup.user_id user2usergroup.group_id => usergroup.id
所以现在我想生成并编辑我的用户对象并获得与我的formbuilder的关系。
我尝试了一些想法并寻求帮助。
这不是真正的状态:
控制器:
/**
* 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
非常感谢我的朋友=)
答案 0 :(得分:0)
要显示用户所属的组并不困难:
{% for usergroup in entity.getUserGroups() %}
<li>{{ usergroup.name }}</li>
{% endfor %}
要在USER表单中编辑它们会更复杂,因为您正在编辑一个用户,但此用户可以是零个,一个或多个组。这意味着可以编辑和删除列表中的每个组,并且可以添加新组。
对于这种情况,您可以使用Collection field type。在this article中,您可以逐步阅读如何使用它。