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 :

Probléme pour récupérer une donnée saisie qui n'est pas dans un formulaire avec symfony [1.x]


Sujet :

Symfony PHP

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Points : 9
    Points
    9
    Par défaut Probléme pour récupérer une donnée saisie qui n'est pas dans un formulaire avec symfony
    Bonjour,

    J'aimerai créer un petit formulaire avec un seul champ texte qui permet à l'utilisateur de rentrer le nom du client puis je dois récupérer cette donnée dans le contrôleur et ensuite afficher la liste de toutes les factures de ce client. Quelqu'un pourrait m'indiquer la démarche à suivre merci.

  2. #2
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu devrais trouver de l'aide sur cette page. Si non, n'hésite pas à revenir.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Bjr oui j'ai regardé cette page mais ça ne m'aide pas vraiment. Je vais continuer à chercher quand même.

  4. #4
    Expert éminent
    Avatar de Michel Rotta
    Homme Profil pro
    DPO
    Inscrit en
    Septembre 2005
    Messages
    4 954
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    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
    Points : 8 486
    Points
    8 486
    Par défaut
    Tu as une saisie à demander à ton utilisateur, ceci implique la mise en oeuvre d'une zone de saisie et la vérification, au retour, que tu as bien le type de valeur que tu attends. Dans symfony, le mieux pour y arriver est de créer un formulaire.

    Soit tu crées un form "à la mano" comme expliqué dans les documents que je t'ai transmit. Soit tu utilises le formulaire de filtre de ta table client en désactivant les champs que tu ne souhaites pas utiliser. L'avantage du formulaire de filtre est de te fournir des méthodes (magiques) pour créer le query associé à ta réponse. L’inconvénient est (peut-être, mais peut probable) d'être une contrainte pour ton application.

    Une solution pour savoir comment utiliser le formulaire de filtre est de générer un module auto-généré (dits formulaire de backend ou d'administration à tords) et de regarder, dans le cache, le code généré.
    Si tu donnes un poisson à un homme, il mangera un jour. Si tu lui apprends à pêcher, il mangera toujours (Lao Tseu).

    • Pensez à valoriser les réponses pertinantes, cliquez sur le bouton vert +1 pour indiquer votre accord avec la solution proposée.
    • Pensez à utiliser la balise [code] pour afficher du code, elle est cachée sous le bouton [#] dans l'éditeur.
    • Une discussion est terminée ? Alors le bouton est votre ami !

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Je me retrouve plus. J'ai maintenant un probléme de route et j'arrivai à voir la donnée saisie dans l'url mais plus maintenant à cause de ce probléme de route. Je vous mets le code et vous me direz ce qu'il faut modifier.
    voilà le fichier routing.yml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    facture_client:
      url:     /facture/:raissoc
      class:   sfDoctrineRoute
      options: { model: Facture, type: object }
      param:   { module: facture, action: indexbis }
      requirements:
        rais_soc: \d+
        sf_method: [get]
    et voilà l'action.class.php
    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
     public function executeForm1(sfWebRequest $request)
      {
      	$this ->facture = DOctrine::getTable('facture')->getFacture();	
      }
      public function executeSubmit($request)
      {
          $this->forward404Unless($request->isMethod('post')); 
          $raissoc = $request->getParameter('raissoc');      
     
     
          $this->redirect('facture/indexbis?'.http_build_query($raissoc));
      }
    public function executeIndexbis(sfWebRequest $request)
      {
        $nom = $request->getPostParameter('raissoc');
        $this->facturesCli =Doctrine::getTable('facture')->getFactureClt($nom);     
      }
    et voila mon formulaire : form1Success.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <form action="submit" method="post">
    <h3>Nom Client: <INPUT type=text name=raissoc></h3>
    <input type="submit" value="envoyer" />
    </form>
    j'aimerai aussi tester le nom saisi et si elle existe pas dans la base de donnée demander à l'utilisateur d'entrer un nom valide, je devrais pouvoir faire ce test dans le controleur et le renvoyer vers la page form1. Merci de m'expliquer clairement quel est mon probléme et ce que je dois modifier.

  6. #6
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Points : 150
    Points
    150
    Par défaut
    Si raissoc est une chaîne, tu dois mettre \w+ au lieu de \d+.

    Pour le test du nom saisi, il faut que tu crée une classe formulaire et que tu utilise les validateur c'est le plus sûre comme solution. Sinon, la solution moche c'est de faire une méthode 'exist' dans la classe ClientTable qui retourne vrai si le client existe dans la base et ensuite de le contrôleur tu fait appel à cette méthode pour savoir si tu renvoi vers le formulaire avec un message d'erreur ou si tu renvoi vers la liste.

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Ok Peytavodka et le reste du code est ce qu'il est juste peut tu me dire au niveau de la route qu'elle est le probléme et comment récupérer la donnée. getParameter ne fctionne pas apparemment.

  8. #8
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2011
    Messages
    124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2011
    Messages : 124
    Points : 150
    Points
    150
    Par défaut
    Je pense que c'est le HTML qui est faux mais j'en suis pas sur.
    Tu devrais créer une classe pour ton formulaire et le faire fonctionner comme les autres formulaires de symfony.

    Je pense que ça peux t'aider >> http://www.symfony-project.org/forms...-Form-Creation

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    ok je vais essayer en attendant le html ya pas de probléme puisque la page afficher bien le formulaire et j'arrivais à voir le nom saisi dans l'url mais j'ai changé la route est j'ai ce message qui s'affiche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    500 | Internal Server Error | InvalidArgumentException
    The "/facture/:raissoc" route has some missing mandatory parameters (:raissoc).
    avec le code affiché dans le routing précédemment mis. Je vais essayer de faire comme tu as dit aprés je verrais si ça marche.

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 17
    Points : 9
    Points
    9
    Par défaut
    Bonjour, j'ai essayé le lien que vous m'avez donné mais j'ai un probléme il reconnait pas le formulaire. J'ai ce message :
    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
    class ContactForm extends sfForm 
    {
      public function configure() 
      { 
        $this->setWidgets( 'nom ' => new sfWidgetFormInputText(), ); 
      } 
    }
     
    class ContactForm extends sfForm 
    { 
      public function configure() 
      { 
        $this->setWidgets( 'nom ' => new sfWidgetFormInputText(), ); 
      }
    }
    Fatal error: Class 'ContactForm' not found in C:\dev\sfproject\APPLI\apps\frontend\modules\contact\actions\actions.class.php on line 15
    J'ai mis la classe ContactForm.class.php sur lib\form\doctrine quand je le mets sur lib\form ça m'affiche un message d'erreur de ce type :
    Warning: require(C:/dev/sfproject/APPLI/lib/form/doctrine/ContactForm.class.php) [function.require]: failed to open stream: No such file or directory in C:\dev\sfproject\APPLI\lib\vendor\symfony\lib\autoload\sfAutoload.class.php on line 188
    Et j'ai ce message aussi quand j'essaie d'installer ahDoctrineEmbeddedRelationsPlugin.

    Merci de m'éclairer svp.

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

Discussions similaires

  1. ouvrir une image .JPG qui n'est pas dans la base
    Par merocean dans le forum Requêtes et SQL.
    Réponses: 19
    Dernier message: 12/02/2009, 21h22
  2. Problème pour récupérer une plage de données
    Par sincenono dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 17/12/2008, 10h55
  3. [MySQL] Problème pour afficher une image dont le chemin est stocké dans la bdd
    Par cel.Saint-Louis dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 12/11/2007, 08h49
  4. Réponses: 2
    Dernier message: 14/04/2006, 18h40
  5. problème pour récupérer une valeur dans ma bd (débutante)
    Par auryn111 dans le forum Langage SQL
    Réponses: 1
    Dernier message: 26/08/2005, 17h49

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