У меня в symfony создано 2 объекта: User и Role во многих отношениях. Это означает, что у каждого пользователя может быть больше ролей и ролей, которые могут быть установлены для многих пользователей.
Класс пользователя:
/**
* @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, - это строки с текстовыми полями с выбранными именами ролей. Но это не то, что мне нужно.