Bonjour,

Je souhaiterais récupérer des articles, chacun dépendant d'une catégorie, sachant que les articles de la catégorie "administration" ne soit visible que par les utilisateur ayant le droit "Super Admin" de FOSUserBundle.

Pour cela, je souhaiterais savoir s'il était possible de récupérer un "container" dans une classe héritant de la classe "EntityRepository" ?

Si non, quel était la meilleur façon de faire ?

Actuellement j'ai fait ça mais ça ne fonctionne pas du tout
(Je débute avec Symfony...)

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
<?php
 
namespace Test\SiteBundle\Repository;
 
use Doctrine\ORM\EntityRepository;
 
use \Symfony\Component\DependencyInjection\ContainerAwareInterface;
use \Symfony\Component\DependencyInjection\ContainerInterface;
 
/**
 * NewsRepository
 *
 * This class was generated by the Doctrine ORM. Add your own custom
 * repository methods below.
 */
class NewsRepository extends EntityRepository implements ContainerAwareInterface
{
    protected $container;
 
    public function setContainer(ContainerInterface $container = null) {
        $this->container = $container;
    }
 
    public function getLastestNews($limit = 10)
    {
        $query = $this->createQueryBuilder('n')
                ->orderBy('n.created', 'DESC');
 
        $user = $this->container->get('security.context')->getToken()->getUser();
        if(!$user->isSuperAdmin())
            $query
                ->select('n', 'nc')
                ->leftJoin ('n.category', 'cn')
                ->where ('cn.name != :name_cat')
                ->set ('name_cat', 'Administration');
 
        if(FALSE === is_null($limit))
            $query->setMaxResults($limit);
 
        return $query->getQuery()
                ->getResult();
    }
}
Je sais pas sinon si c'est très propre de passer un objet "User" dans la méthode "getLastestNews"

Merci de votre aide