IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Symfony PHP Discussion :

[PagerFanta] MVC ?


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut [PagerFanta] MVC ?
    Bonjour.

    Je suis en train de découvrir PagerFanta, et je suis confronté a quelque chose qui me parait très bizarre.

    Dans tous les tutorials que je trouve, ils mettent le code SQL dans le controller, ce qui permet de modifier la requete pour insérer :
    Je pensais que c'était une mauvaise pratique de mettre le code SQL dans le controller, et qu'il devait plutot être dans les repository.

    Est ce qu'il existe une méthode pour bien séparer le code, et toujours bénéficier des optimisation SQL ?

    La j'utilise le ArrayAdapter, mais c'est juste un tri après la requete... donc un paginator qui ne sert que visuellement, et pas techniquement.


    Par ailleur, quand j'essaye d'utiliser DoctrineCollectionAdapter

    j'obtiens cette erreur :
    Catchable Fatal Error: Argument 1 passed to Pagerfanta\Adapter\DoctrineCollectionAdapter::__construct() must implement interface Doctrine\Common\Collections\Collection, array given
    hors, j'ai bien ce code dans mon repository :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    		return $qb->getQuery()->execute();
    Il y a un moyen de retourner des collections doctrine différent de celui ci ?

    Avez-vous des conseils ?

    Merci,
    Pierre

  2. #2
    Membre éprouvé Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Par défaut
    J'utilise PagerFanta et voici comment je procède.

    Dans mon repository j'ai une méthode qui me permet de récupérer tous les utilisateurs.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    public function getAllUsers(){	
    		$queryBuilder = $this->createQueryBuilder('u');
    		return $queryBuilder;			
    	}
    Tu noteras que je renvoi le queryBuilder directement.

    Maintenant dans ton controller, admettons que tu récupère le retour de ta fonction dans une variable $userQB;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    use Pagerfanta\Adapter\DoctrineORMAdapter;
    ...
    $adapter = new DoctrineORMAdapter($userQB);
    ...
    Normalement a partir de la, tu as ton adapter, il ne te reste plus qu'a suivre la doc.

    Si t'as besoin de plus d'info sur la suite, n’hésite pas

  3. #3
    Membre Expert
    Avatar de pmithrandir
    Homme Profil pro
    Responsable d'équipe développement
    Inscrit en
    Mai 2004
    Messages
    2 419
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Responsable d'équipe développement
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 419
    Par défaut
    Pas bete de retourner le query builder.
    Tu distors un peu le principe en insérant le fetch dans le controller, mais pkoi pas.

    Je vais mettre ca en place ce soir je pense.

    Merci,
    Pierre

  4. #4
    Membre éprouvé Avatar de Avrel
    Homme Profil pro
    Développeur Web
    Inscrit en
    Avril 2010
    Messages
    118
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Avril 2010
    Messages : 118
    Par défaut
    Bah finalement avec cette méthode tu fetch pas justement, tu file ton query builder à PagerFanta et li s'occupe du reste, a aucun moment tu te retrouves avec une collection entre les mains.

    L'avantage d'utiliser le DoctrineORMAdapter, c'est qu'il va s'occuper de modifier la requete pour accéder uniquement aux N éléments voulus, sans avoir une collection d'objet qui peut en contenir des milliers.

Discussions similaires

  1. Réponses: 4
    Dernier message: 24/02/2009, 12h06
  2. [GEF]GEF EditViewPart MVC etc...
    Par georgemel dans le forum Eclipse Platform
    Réponses: 4
    Dernier message: 19/07/2007, 19h07
  3. [MVC][JAVABEAN][JSP]
    Par phileme dans le forum Servlets/JSP
    Réponses: 8
    Dernier message: 12/07/2004, 10h22
  4. [MVC] Différences entre les framework MVC push et pull ?
    Par XavierZERO dans le forum Frameworks Web
    Réponses: 5
    Dernier message: 15/01/2004, 13h12
  5. Classe abstraite / MVC
    Par caramel dans le forum MVC
    Réponses: 5
    Dernier message: 01/04/2003, 09h27

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo