2017-01-31 16 views
0

私のプロジェクトに問題があります コントローラからビューに変数を送信したいと思います。 アクションで私は現在のユーザー(私はFOSUserBundleを使用しています)のIDを取得し、通知テーブルでそのユーザーの通知数を検索します。 私はビューに番号を送信したいと思います。 私はいつもこのエラー "変数" 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があり、実際に期待しているものをレンダリングしていない可能性があります(つまり、バンドルのResourcesフォルダからデフォルトのレイアウトを選んでください)。それは長時間ですが、ファイル名の変更やrender()呼び出しの変更を試みることができますか? – Strnm

答えて

0

あなたは、コントローラには何も要求せず小枝テンプレートで直接ユーザーのデータにアクセスすることができます。ユーザーはapp.userのようにアクセスできます。

あなたが行うことができます

{% if is_granted("ROLE") %} 
    Hi {{ app.user.username }} 
{% endif %} 
0

私は解決策

$this->container->get('security.context')->getToken()->getUser() 

は今、私は唯一の$ this - に必要な、symfony3では動作しません見つかっ>の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(); 
関連する問題