Précédent   Forum des professionnels en informatique > PHP > Bibliothèques et frameworks > symfony
symfony Forum d'entraide sur le framework PHP symfony. Avant de poster : cours symfony et FAQ symfony
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 17/06/2011, 16h28   #1
Invité de passage
 
MEISSA MBAYE
Inscription : mai 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : MEISSA MBAYE

Informations forums :
Inscription : mai 2010
Messages : 17
Points : 1
Points : 1
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.
sipap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 18/06/2011, 14h18   #2
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 18/06/2011, 15h57   #3
Invité de passage
 
MEISSA MBAYE
Inscription : mai 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : MEISSA MBAYE

Informations forums :
Inscription : mai 2010
Messages : 17
Points : 1
Points : 1
Bjr oui j'ai regardé cette page mais ça ne m'aide pas vraiment. Je vais continuer à chercher quand même.
sipap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/06/2011, 20h10   #4
Modérateur
 
Avatar de Michel Rotta
 
Homme Michel Rotta
Responsable d'exploitation informatique
Inscription : septembre 2005
Messages : 4 913
Détails du profil
Informations personnelles :
Nom : Homme Michel Rotta
Âge : 49
Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

Informations professionnelles :
Activité : Responsable d'exploitation informatique
Secteur : Distribution

Informations forums :
Inscription : septembre 2005
Messages : 4 913
Points : 7 505
Points : 7 505
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 !
Michel Rotta est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 14h59   #5
Invité de passage
 
MEISSA MBAYE
Inscription : mai 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : MEISSA MBAYE

Informations forums :
Inscription : mai 2010
Messages : 17
Points : 1
Points : 1
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 :
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 :
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 :
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.
sipap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 16h48   #6
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
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.
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 17h03   #7
Invité de passage
 
MEISSA MBAYE
Inscription : mai 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : MEISSA MBAYE

Informations forums :
Inscription : mai 2010
Messages : 17
Points : 1
Points : 1
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.
sipap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 17h22   #8
Membre habitué
 
Homme Ludovic
Étudiant
Inscription : janvier 2011
Messages : 124
Détails du profil
Informations personnelles :
Nom : Homme Ludovic
Localisation : France

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : janvier 2011
Messages : 124
Points : 140
Points : 140
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
PeytaWodka est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/06/2011, 18h35   #9
Invité de passage
 
MEISSA MBAYE
Inscription : mai 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : MEISSA MBAYE

Informations forums :
Inscription : mai 2010
Messages : 17
Points : 1
Points : 1
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 :
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.
sipap est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/06/2011, 16h19   #10
Invité de passage
 
MEISSA MBAYE
Inscription : mai 2010
Messages : 17
Détails du profil
Informations personnelles :
Nom : MEISSA MBAYE

Informations forums :
Inscription : mai 2010
Messages : 17
Points : 1
Points : 1
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 :
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(), ); 
  }
}
Citation:
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 :
Citation:
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.
sipap est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h13.


 
 
 
 
Partenaires

Hébergement Web