Tôi có trong symfony đã tạo 2 thực thể: Người dùng và Vai trò trong mối quan hệ nhiều-nhiều. Điều đó có nghĩa là mọi người dùng đều có thể đặt nhiều vai trò và vai trò hơn cho nhiều người dùng.symfony2 hộp kiểm tra nhiều biểu mẫu
tài lớp:
/**
* @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;
//....
}
Vai trò lớp:
/**
* @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;
//...
}
tôi không thể hình dung làm thế nào để soạn xây dựng truy vấn trong Symfony2 để liệt kê tất cả các vai trò đó tồn tại và bổ sung nó vào cuối cùng của UserForm, nơi có thể được chọn (như hộp kiểm) vai trò được cấp cho người dùng. Tôi cố gắng để sử dụng bộ sưu tập như thế này trong loại người dùng
->add('roles', 'collection',array('label' => 'Role', 'required' => false,'type'=> new RoleType()))
Điều tốt nhất tôi nhận được từ symfony được hàng với textbox với những cái tên được lựa chọn vai diễn. Nhưng đây không phải là những gì tôi cần.
đặt tùy chọn 'mở rộng' thành 'true' để có danh sách hộp kiểm. Và bạn cần triển khai phương thức '__toString()' trên mô hình 'Role' (được sử dụng để hiển thị nhãn bên cạnh mỗi hộp kiểm. – GiDo
Tôi thấy mình phải thêm một phương thức khác vào thực thể User để trả về vai trò như một Collection thay vì một mảng - getRolesAsCollection –
Và làm thế nào để bạn gọi cụ thể là 'getRolesAsCollection' và ở đâu? –