我在symfony中创建了2个实体:多对多关系中的用户和角色。这意味着每个用户都可以拥有更多角色,并可以为许多用户设置角色。symfony2多对多表格复选框
用户等级:
/**
* @ORM\Entity
* @ORM\Table(name="JEP_User")
* @ORM\Entity(repositoryClass="Chrchel\JepBundle\Repository\UserRepository")
*/
class User implements AdvancedUserInterface {
/**
* @ORM\Id()
* @ORM\Column(name="id",type="integer")
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @ORM\Column(name="username",type="string",length=100,unique=true)
*/
private $username;
/**
* @ORM\ManyToMany(targetEntity="Role", inversedBy="users")
*
*/
protected $roles;
//....
}
角色类:
/**
* @ORM\Table(name="JEP_Role")
* @ORM\Entity()
*/
class Role implements RoleInterface {
/**
* @ORM\Column(name="id", type="integer")
* @ORM\Id()
* @ORM\GeneratedValue(strategy="AUTO")
*/
protected $id;
/** @ORM\Column(name="name", type="string", length=30) */
protected $name;
/** @ORM\Column(name="role", type="string", length=20, unique=true) */
protected $role;
/** @ORM\ManyToMany(targetEntity="User", mappedBy="roles") */
protected $users;
//...
}
我无法弄清楚如何谱写出的Symfony2查询生成器列出存在的所有角色,并把它添加到年底UserForm的角色可以选择(作为复选框)授予用户的角色。 我试图用收集像这样的用户类型
->add('roles', 'collection',array('label' => 'Role', 'required' => false,'type'=> new RoleType()))
我从symfony中获得的最好用文本框行与角色选定的名称。但这不是,我需要。
将“expanded”选项设置为“true”以具有复选框列表。你需要在角色模型上实现'__toString()'方法(用于在每个复选框旁边显示标签 – GiDo 2012-03-15 17:10:13
我发现我必须向User实体添加另一个方法才能将角色作为Collection返回,而不是as一个数组 - getRolesAsCollection。 – 2012-04-18 10:36:57
你如何调用这个特定的'getRolesAsCollection'和where? – 2012-05-24 19:15:27