gpt4 book ai didi

symfony - Sonata Admin Bundle 删除 routeCollection 角色

转载 作者:行者123 更新时间:2023-12-01 00:30:27 38 4
gpt4 key购买 nike

我正在使用 Sonata Admin Bundle,但在使用该功能时遇到了一些问题:

function configureRoutes(RouteCollection $collection){ }

如果我写一个简单的函数,该函数可以正常工作:
$collection->remove('create');

但是我要做的是根据连接的用户的角色删除一些路由,所以我尝试了:
$seguridad = $this->getConfigurationPool()->getContainer()->get('security.context');
if ($seguridad->getToken()->getUser() != "anon."){
if ( !$seguridad->isGranted('ROLE_ADMIN') ) {
$collection->remove('create');
}
}

但是以管理员身份登录我收到错误:
在第 31 行的 SonataAdminBundle:Block:block_admin_list.html.twig 中渲染模板(“路由“admin_sademer_core_MIENTITY_create”不存在。”)时抛出异常。

就像在某个时刻,奏鸣曲在进入仪表板之前删除了路线创建,然后当我进入仪表板时,我尝试进入路线创建,但路线已被删除。但我不确定发生了什么。

任何的想法?非常感谢!

最佳答案

我只是用不同的方式,只是在entitAdmin.php 文件中覆盖了isGranted()。然后您可以根据用户角色检查权限。但它达到了我们的目的。如果我们想使用 $collection->remove('create'),我们不能这样做,因为无法在应用程序运行时调用该方法 ("configureRoutes()")。仅在创建缓存时调用该方法(“configureRoutes()”)。

 /**
* {@inheritdoc}
*/
public function isGranted($name, $object = null)
{
$user = $this->getConfigurationPool()->getContainer()->get('security.context')->getToken()->getUser();

switch ($name) {
case "CREATE":
if (!$user->hasRole("ROLE_ADMIN")) {
return false;
}
default:
return true;
}
}

关于symfony - Sonata Admin Bundle 删除 routeCollection 角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16296089/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com