我刚刚发现了索纳塔,看起来真的很酷,但我无法找到如何做简单的事情。
例如,我有一个用户实体的一对多项目列表,是否可以只显示属于当前用户的项目?
在同一个管理员中,如果用户具有管理员角色,我希望显示更多字段。
要完成,可以仅为某些角色显示一些管理员部分,例如我只希望用户在我的userAdmin上拥有角色admin。
答案 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
的更多信息