只显示Sonata的一些数据

时间:2015-02-12 22:20:16

标签: php symfony sonata-admin

我刚刚发现了索纳塔,看起来真的很酷,但我无法找到如何做简单的事情。

例如,我有一个用户实体的一对多项目列表,是否可以只显示属于当前用户的项目?

在同一个管理员中,如果用户具有管理员角色,我希望显示更多字段。

要完成,可以仅为某些角色显示一些管理员部分,例如我只希望用户在我的userAdmin上拥有角色admin。

1 个答案:

答案 0 :(得分:1)

要过滤列表,您必须在管理类中使用createQuery,例如:

 public function createQuery($context = 'list') {
    $user = $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser();
    $query = parent::createQuery($context);
    $query->andWhere($query->getRootAlias() .'.user =: user'));
    $query->setParameter('user', $user);

    return $query;
}

要根据用户角色显示更多字段,您可以在formMapper中执行此操作,例如:

if ($user->hasRole('ROLE_ADMINISTRATEUR'))
{
  $formMapper->addYourfields ....
}

最后要确保一个洞区域,你可以使用symfony ACL,例如security.yml你可以这样做:

- { path: ^/admin/, role:  [ROLE_ADMINISTRATEUR] }

您可以阅读有关symfony ACL

的更多信息