2017-01-31 3 views
0

У меня проблема в моем проекте Я хочу отправить переменную с контроллера на представление. В действии я хочу получить идентификатор текущего пользователя (я использую 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

вы можете добавить код 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(); 
Смежные вопросы