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 :

Filtre et pagination [2.x]


Sujet :

Symfony PHP

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 23
    Points : 19
    Points
    19
    Par défaut Filtre et pagination
    Bonjour,

    je développe actuellement une application sous Symfony 2.3.1 et je rencontre un problème.

    J'ai une page qui liste les entités "Article". Sur cette page, j'ai créé un formulaire me permettant de filtrer les articles affichés dans la liste. La liste est découpé en plusieurs pages si le nombre d'articles est trop important.

    Mon filtre fonctionne correctement mais j'ai un problème à partir du moment où je tente de changer de page sur une liste d'articles ayant été filtrés. En effet, dès lors que je change de page, le filtre ne s'applique plus. C'est logique car la requête POST n'est pas transmise aux autres pages.

    J'ai essayé de passer le contenu de mon formulaire via la session, mais cette dernière ne peu pas contenir mes entités (mon formulaire contient un champ entité).

    Ma question est donc plutôt simple : comment puis-je passer le résultat d'un formulaire contenant un champ de type entity de page en page ?

    Merci d'avance.

  2. #2
    Nouveau membre du Club
    Inscrit en
    Juin 2013
    Messages
    34
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 34
    Points : 33
    Points
    33
    Par défaut
    Salut,

    Normalement tu peux stocker tes entités en session (après quand elle viennent d'un formulaire ce n'est plus forcement des Entity, à voir de ce côté).


    Sinon tu peux toujours stocker l'id de tes articles en session.

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Merci de ta réponse ! J'ai résolu mon problème de la manière suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    $i = 0;
    foreach ($searchCriteria['entityName'] as $entityName){
    	$searchCriteria['entityName'][$i] = $entityName->getId();
    	$i++;
    }
    Je remplace l'entité dans ma variable contenant mon formulaire par son id. Ainsi je peux passer la variable en session sans problème. Ce qui n’amène à une nouvelle question :

    Comment puis-je supprimer ma variable de session quand je quitte ce contrôleur pour un autre ? sans avoir à le faire dans chacun des autres contrôleurs si possible.

    Merci d'avance.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2013
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2013
    Messages : 60
    Points : 80
    Points
    80
    Par défaut
    Bonjour,

    Pourquoi ne pas passer ton critère de recherche en session ?

    Et pourquoi ne pas passer ce critère en GET ?

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2013
    Messages
    23
    Détails du profil
    Informations forums :
    Inscription : Juin 2013
    Messages : 23
    Points : 19
    Points
    19
    Par défaut
    Merci de ta réponse, mais j'ai fini par trouver une solution pour ne garder ma variable de session active que le temps que l'utilisateur parcourt la liste.

    J'ai crée un service qui s’exécute sur l’événement kernel.response (éxécuté à chaque chargement d'un contrôleur) dans lequel j'ai mis ce code :

    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
     
    class SessionResetListener
    {
      private $container;
     
      public function __construct($container)
      {
         $this->container = $container;
      }
     
      public function onKernelResponse(FilterResponseEvent $event)
      {
       if (HttpKernelInterface::MASTER_REQUEST !== $event->getRequestType()) {
          return;
        }
        $request = $this->container->get('request');
        $routeName = $request->get('_route');
        if($routeName != 'corfiche_index' && $routeName != 'corfiche_voir'){
    		$session = $this->container->get('session');
    		if ($session->has('searchCriteria')) {
    			$session->remove('searchCriteria');
    			$session->save();
    		}
    	}
      }
    }

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Tableau avec tri, filtre et pagination avec entete et pied fixe
    Par Pelote2012 dans le forum Contribuez
    Réponses: 1
    Dernier message: 18/12/2016, 18h06
  2. Tableau avec tri, filtre et pagination sans plugin
    Par Pelote2012 dans le forum Contribuez
    Réponses: 0
    Dernier message: 29/07/2014, 15h26
  3. Tableau avec tri, filtre et pagination
    Par Pelote2012 dans le forum Téléchargez
    Réponses: 1
    Dernier message: 23/07/2014, 09h12
  4. [2.x] Filtre de pagination
    Par abdelghafour89 dans le forum Symfony
    Réponses: 4
    Dernier message: 16/01/2013, 12h02
  5. Filtre avec pagination
    Par creatchy dans le forum Langage
    Réponses: 14
    Dernier message: 12/12/2006, 17h30

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