gpt4 book ai didi

fosuserbundle - knp 菜单包 symfony

转载 作者:行者123 更新时间:2023-12-04 03:38:55 25 4
gpt4 key购买 nike

我一直在使用 fos 用户包,其中每个用户都被分配到一个组,每个组都根据 fos 用户包提供特定角色,一切正常。

现在要制作一个菜单系统,我正在尝试使用 Knp 菜单包。现在要制作菜单结构,我想将每个组的角色(动态)传递给菜单系统。这样改变特定组的角色可以允许菜单系统动态变化。

我已经按照文档配置了菜单包

knp menu bundle documentation

这里我在命名空间 Admin\Bundle\HomeBundle\Menu 中添加了一个名为 menu builder 的类;现在我需要调用当前登录用户的组角色并将它们动态添加到菜单中,我还需要将其中一些角色添加到同一主菜单中的子菜单中。如果我走错了路(如果有的话),请改进我,并处理如何使用 Knp 菜单包作为服务将组角色动态包含到菜单中。

提前致谢。

最佳答案

我在 Symfony 3 中找到了另一个解决方案。您可以从容器中获取 security.authorization_checker 并在菜单中使用它

namespace AppBundle\Menu;


use Knp\Menu\FactoryInterface;
use Symfony\Component\DependencyInjection\ContainerAwareInterface;
use Symfony\Component\DependencyInjection\ContainerAwareTrait;

class Builder implements ContainerAwareInterface
{
use ContainerAwareTrait;
public function topHeaderMenu(FactoryInterface $factory, array $options)
{
$checker = $this->container->get('security.authorization_checker');
$menu = $factory->createItem('root');
$menu->setChildrenAttribute('class','links-top list-inline');
if ($checker->isGranted('ROLE_ADMIN')) {
$menu->addChild('admin panel', array('route' => 'admin'));
}
if ($checker->isGranted('ROLE_USER')) {
$menu->addChild('account', array('route' => 'login'));
$menu->addChild('logout', array('route' => 'logout'));
} else {
$menu->addChild('registration', array('route' => 'registration'));
$menu->addChild('login', array('route' => 'login'));
}

return $menu;
}
}

关于fosuserbundle - knp 菜单包 symfony,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29327944/

25 4 0