2017-01-31 41 views
0

我在我的項目中遇到問題 我想從控制器發送變量到視圖。 在行動中我想獲得當前用戶的ID(我使用FOSUserBundle),然後在通知表中搜索該用戶的通知數量。 到最後,我想發送號碼到一個視圖。 但我總是得到這個錯誤「變量」notificationN「不存在。」 我該怎麼辦? 這個動作:從控制器發送變量到視圖

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

你能添加layout.html.twig的代碼? – Strnm

+0

這是一個很長的文件,但我打電話給變量{{notificationN}} – Ayhem

+0

對不起,但沒有樹枝我沒有看到你發佈什麼錯誤。 難道是你有多個layout.html.twig,它實際上並沒有渲染你期待的那個(即從資源包文件夾中選擇默認佈局)。這是一個很長的一步,但你可以嘗試更改文件的名稱和render()調用嗎? – Strnm

回答

0

您可以直接訪問在樹枝模板用戶數據,而無需請求控制器中的任何東西。用戶可以像這樣訪問:app.user。

你可以這樣做:

{% if is_granted("ROLE") %} 
    Hi {{ app.user.username }} 
{% endif %} 
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(); 
相關問題