只显示部分数据奏鸣曲
Only display some data Sonata
我刚发现索纳塔,它看起来很酷,但我找不到如何做简单的事情。
例如,我有一个与用户实体一对多的项目列表,是否可以只显示属于当前用户的项目?
在同一个管理员中,如果用户具有管理员角色,我想显示更多字段。
最后,是否可以仅针对某些角色显示某些管理部分,例如,我只希望用户在我的 userAdmin 上具有角色 admin。
要过滤列表,您必须在管理中使用 createQuery class,例如:
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
我刚发现索纳塔,它看起来很酷,但我找不到如何做简单的事情。
例如,我有一个与用户实体一对多的项目列表,是否可以只显示属于当前用户的项目?
在同一个管理员中,如果用户具有管理员角色,我想显示更多字段。
最后,是否可以仅针对某些角色显示某些管理部分,例如,我只希望用户在我的 userAdmin 上具有角色 admin。
要过滤列表,您必须在管理中使用 createQuery class,例如:
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