我在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