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 :

affichage en utilisant une requette [1.x]


Sujet :

Symfony PHP

  1. #1
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut affichage en utilisant une requette
    Bonjour tous le monde

    Dans un formulaire généré par l'admin generator

    je dois afficher juste les 10 premiers lignes (Limit 10)

    Mais je ne sais pas comment faire ma requette, étant dans la class MonModelForm.class.php

    Est ce que je peux faire quelque chose comme

    Doctrine::getTable...?


    Merci d'avance

  2. #2
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Tu peux faire un Doctrine_Core::getTable($str) de n'importe où (ou presque). En tout cas depuis ton formulaire oui.

    Du coup, cela donnerait un : Doctrine::getTable($str)->findAllBy?($str)->limit(10);
    (instruction à vérifier, j'utilise jamais la méthode limit).

    Par contre, vu que tu passes par l'admin-generator, il y a plus simple : dans ton fichier generator.yml, tu peux lui indiquer le nombre d'élément par page (pareil, je l'utilise rarement, mais c'est forcément dans la doc).

    EDIT

    Tu as tout ici : http://www.symfony-project.org/jobee...Doctrine/fr/12

    Il s'agit donc de l'attribut max_per_page

  3. #3
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Tu dois modifier ton generator.yml pour lui indiquer quel méthode il va devoir utiliser pour récupérer les données.

    Tu va devoir créer cette nouvelle méthode qui devra retourner (return) les données (pas la requête).

    Pour créer la requête il n'y a pas de meilleur méthode, le doctrine_querry::create() est une bonne méthode standard pour ceux qui commences, d'autre sont peut-être plus rapide en longueur de code (pas en exécution), elle viendrons avec de l'expérience, dans tous les cas, les données retournée seront les mêmes.

  4. #4
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut
    Moi je pensai passer une requette, de type query('select..'), cela me va mieux sinon.

  5. #5
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Avec doctrine, c'est une mauvaise idée.

  6. #6
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut
    je voudrais à partir d'un formulaire

    Par exemple séléctionné les noms commencant par A (like A%) et limite (10) par exemple

    Si je ne peux pas faire avec Doctrine, ça serait quoi la solution??

    Merci

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Par défaut
    Ce que je pense que Michel Rotta voulait dire (qu'il corrige si je me trompe) est que c'est une mauvaise idée d'écrire query('select..') avec Doctrine. Il vaut mieux passer par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Doctrine::getTable('taTable')
      ->createQuery()
      ->where('str LIKE ?', 'A%')
      ->limit(10)
      ->execute);
    (se servir des méthodes Doctrine, et non écrire toi-même ta requête SQL)

  8. #8
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    Et à quoi je sert moi si tu donnes mes réponses à ma place

    Quoique, à la réflexion, j'aurais utilisé un doctrine_query::create()... mais le résulta est identique.

  9. #9
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut
    Je pens que je n'ai pas bien expliqué mon problème ..

    La requette que je dois faire à partir du formulaire (c'est la ou je n'ai pas bien expliqué).

    Je ne suis pas dans le controleur au moment ou je fais ma requette mais plus dans MonModelFrom.class.php

    et je voudrai si possible passer quelque chose comme (Je sais que ce n'est pas correct .. à vous de me corriger).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
     $this->widgetSchema['MonModel']->Doctrine::getTable('MonModel')
      ->createQuery()
      ->where('str LIKE ?', 'A%')
      ->limit(10)
      ->execute);
    ou quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     $this->widgetSchema['Monwidget'] = new sfWidgetFormDoctrineChoice(
    	 array(	'expanded' => true,
    	 		'multiple' => true, 
    	 		'model' => 'MonModel',
    	 		'query' =>  'Ici ma requette'
    ));
    Merci par avance.

  10. #10
    Expert confirmé
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : DPO
    Secteur : Distribution

    Informations forums :
    Inscription : Septembre 2005
    Messages : 4 954
    Par défaut
    lol, oui. (et je vais tenter de redevenir sérieux).

    Ton premier exemple est ... heu ... j'ai pas de nom, mais n'a aucune chance de marcher (ni de reculer)(j'avais dis sérieux ?)

    Je deuxième est proche de la vérité.

    Dans le form :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public function configure()
    {
       ...
       $this->widgetSchema['Monwidget'] = new sfWidgetFormDoctrineChoice(array(
                 'model' => 'NomDeLaTable',
                 'table_method' => 'getForSelect',
                 'multiple' => true
       ));
       ...
    }
    Et dans ton modèle, pour la table
    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
     
    class NomDeLaTable extend NomDeLaTableBase
    {
       ...
       public function getForSelect()
       {
          // En honneur à bilbonec qui a donné la solution partiel et correcte
          $q = Doctrine::getTable('taTable')
                    ->createQuery()
                    ->where('str LIKE ?', 'A%')
                    ->limit(10)
          return $q->execute);
       }
     
       public function __toString()
       {
          return $this->getStr();
       }
       ...
    }
    Code non testé.

    Ceci devrait être, à quelques nom de tables et champs, le code que tu souhaites

  11. #11
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut
    T super Michel Rotta,

    J'ai pas encore testé mais pour moi c'est très logique de faire une fonction dans le modelTable ..

    Je l'ai crée mais je ne savais pas comment l'appeler...

    Je te dirai dans le prochain message si ça marche


    Merci

  12. #12
    Membre confirmé
    Profil pro
    Étudiant
    Inscrit en
    Février 2008
    Messages
    131
    Détails du profil
    Informations personnelles :
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2008
    Messages : 131
    Par défaut
    Merci c'était exactement ça .. et ça marche à merveille

    Merci beaucoup, donc je le met en résolu

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 10/07/2012, 19h53
  2. poster une requête HTTP on utilisant httpClient ?
    Par feedo dans le forum Servlets/JSP
    Réponses: 13
    Dernier message: 02/02/2009, 12h04
  3. utiliser le résultat d'une requette Access sous VBA
    Par bossLINDROS dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/07/2008, 17h49
  4. Réponses: 4
    Dernier message: 23/07/2007, 18h43
  5. Réponses: 2
    Dernier message: 24/06/2003, 21h31

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