我想要做的是只显示他有权访问的内容。
我首先在 security.yml &中做 access_control 。重定向,但我必须做至少30个不同的帐户; /
接下来,我创建将连接到数据库的twig扩展并获取当前记录的用户特定设置 - 访问面板。这是好方法吗?
问题是
$user = $this->getUser()->getId();
$currentUser = $this->em->getRepository('AppBundle:User')->find($user);
它不起作用,空白页面出现在dev env
中但是当我把1
$currentUser = $this->em->getRepository('AppBundle:User')->find(1);
&安培; 1是用户ID一切正常。
services.yml
app.twig.users_extension:
class: AppBundle\Twig\Extension\AccesExtension
arguments: ["@doctrine.orm.entity_manager","@security.token_storage"]
tags:
- { name: twig.extension }
Twig Extension
class AccesExtension extends \Twig_Extension
{
protected $em;
protected $tokenStorage;
public function __construct(EntityManager $em, TokenStorage $tokenStorage)
{
$this->em = $em;
$this->tokenStorage = $tokenStorage;
}
public function getUser()
{
return $this->tokenStorage->getToken()->getUser();
}
public function getGlobals()
{
$user = $this->getUser()->getId();
$currentUser = $this->em->getRepository('AppBundle:User')->find($user);
return array (
"acces" => $currentUser,
);
}
public function getName()
{
return "AppBundle:AccesExtension ";
}
}
答案 0 :(得分:0)
正如评论中的人已经告诉您的那样,您可以使用security voters。
这是一个带有视频/文字的simple tutorial,它解释了选民的使用以及如何在树枝中使用它们,这可以帮助您解决问题。