Вы хотите фильтровать уведомления. Должны отображаться только уведомления, касающиеся подключенных пользователей. У вас есть два решения:
(очень) плохой способ: добавить тест в поле зрения
<ul class="dropdown-menu animated half flipInX">
//this section
{% for notif_c in notif_conges %}
{% if notif_c.etat == "Acceptée" and notif_c.user = app.user %}
<li><a>Votre demande : "{{notif_c.motif}}" Envoyée le "{{notif_c.CreatedAt|date('Y-m-d H:i:s')}}" a était traitée </a></li>
{% endif %}
{% endfor %}
</ul>
Это плохой способ, потому что вы будете перенаправлять все уведомления на просмотр
Плохой способ: добавить фильтр в свой контроллер
class YourController
{
public yourAction()
{
/** ... your code to handle notifications **/
foreach ($notifications as $notification) {
if ($notification->getUser()->getId() == $this->getUser()->getId)) {
$filteredNotification[] = $notification;
}
}
return $this->render('your_template_file', [
'notif_c' => $filteredNotifications
]);
}
}
Это все еще плохой способ, потому что вы извлекаете все уведомления из базы данных.
Хороший способ: запрашивать в хранилище только необходимое уведомление
Предполагая, что ваши уведомления извлекаются с помощью Doctrine, хранилище может фильтровать данные, чтобы получать только соответствующие данные.
class YourController
{
public yourAction()
{
/** ... your code is certainly something lke this: **/
$notificationRepository = $this->entityManager->getRepository('AppBundle:Notification');
$notifications = $notificationRepository->findAll();
render
return $this->render('your_template_file', [
'notif_c' => $notifications
]);
}
}
Заменить findAll()
на findBy(array $criteria)
и добавить критерий в качестве первого параметра:
class YourController
{
public yourAction()
{
$notificationRepository = $this->entityManager->getRepository('AppBundle:Notification');
$notifications = $notificationRepository->findBy([
'etat' => 'Acceptée',
'user' => $this->getUser(), //this could be a little different, I do not remember how to handle user in Sf2.8
]);
render
return $this->render('your_template_file', [
'notif_c' => $notifications
]);
}
}