我刚刚发现了索纳塔,它看起来很酷,但我找不到如何做简单的事情。
例如,我有一个用户实体的一对多项目列表,是否可以只显示属于当前用户的项目?
在同一个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 的信息