Я создал в Symfony 2 сущности: Пользователь и Роль в отношениях «многие ко многим». Это означает, что у каждого пользователя может быть больше ролей, а роли могут быть установлены для многих пользователей.
Класс пользователя:
/**
* @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, где можно выбрать (в виде флажков) роли, предоставленные пользователю.
Я пытался использовать коллекцию, как это в UserType
->add('roles', 'collection',array('label' => 'Role', 'required' => false,'type'=> new RoleType()))
Лучшее, что я получаю от Symfony - это строки с текстовыми полями с выбранными именами ролей. Но это не то, что мне нужно.