我的项目有问题 我想从控制器向视图发送变量。 在动作中,我想获取当前用户的ID(我正在使用FOSUserBundle),然后在通知表中搜索该用户的通知数量。 最后我想将号码发送到视图。 但我总是得到这个错误“变量”通知N“不存在。”。 我该怎么办? 这个动作:
public function notificationNumberAction(){
$user = $this->container->get('security.context')->getToken()->getUser();
$user->getId();
$sql = "SELECT COUNT(*) FROM notification WHERE userId=".$user.";";
$em = $this->getDoctrine()->getManager();
$stmt = $em->getConnection()->prepare($sql);
$n=$stmt->execute();
return $this->render('EnigmaSocialProBundle::layout.html.twig',array("notificationN"=>$n));
}
答案 0 :(得分:0)
您可以直接在树枝模板中访问用户数据,而无需在控制器中请求任何内容。用户可以像这样访问:app.user。
你可以这样做:
{% if is_granted("ROLE") %}
Hi {{ app.user.username }}
{% endif %}
答案 1 :(得分:0)
我找到了解决方案
$this->container->get('security.context')->getToken()->getUser()
不能使用symfony3,现在我只需要$ this-> getUser()来获取当前用户
新动作是:
$user = $this->getUser();
$user->getId();
$em = $this->getDoctrine()->getEntityManager();
$stmt = $em->createQueryBuilder('n')->select('COUNT(n)')->from('EnigmaSocialProBundle:Notification','n')
->where('n.userId = :p')->setParameter('p',$user);
$n=$stmt->getQuery()->getSingleScalarResult();