只显示一些数据索纳塔



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

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

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

最后,是否可以只显示某些角色的一些管理部分,例如,我只希望用户在我的userAdmin上具有角色管理员。

要过滤列表,您必须在管理类中使用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,例如在安全方面。yml你可以这样做:

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

您可以阅读更多关于symfony ACL 的信息

最新更新