Symfony2 -显示动态可选择的角色


Symfony2 - Showing dynamic selectable roles

我使用Symfony2和Sonata。
我有一个应用程序的部分列表,我想让我的用户访问这些部分。

的例子:

  • John应该有权访问section1和section3
  • Bob应该有权访问section2和section3

所以我创建了3个角色,我可以附加到用户/组(通过sonata)

  • ROLE_SECTION1
  • ROLE_SECTION2
  • ROLE_SECTION3

但是当我创建新部分时,我希望在admin
中自动列出相关角色。(而不必每次在我的security.yml中声明它们)

我看到sonata-admin-user在使用角色安全处理程序时这样做,
但我不知道如何做同样的。

最后这个问题很简单,如下:

如何在Sonata用户管理包编辑器列表中添加一些动态可选角色?

首先可以从数据库加载用户和组。参见Symfony2食谱从数据库加载用户。然后在每个节的控制器中:

if ($this->securityContext->isGranted('Role_section1') === false) {
    echo 'forbidden';
}