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 :

Formulaire de contact [1.x]


Sujet :

Symfony PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Formulaire de contact
    Hello.

    Je souhaite créer un formulaire de contact.
    J'ai déja parcouru pas mal de tutos qui expliquent comment créer un formulaire permettant à un visiteur d'envoyer un message sur une adresse fixe.

    Mais ce que je cherche à faire, c'est un formulaire qui permet à un visiteur lambda d'envoyer un message à une personne (dont les coordonnées sont stockées dans une base).

    Je bloque sur un point : comment passer l'id de la personne à qui on écrit à mon formulaire ?

    En gros, j'ai créé mon formulaire :
    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
     
    <form id="contact" action="<?php echo url_for('contact/submit') ?>" method="POST">
      <table>
        <tbody>
          <?php echo $contact_form['id']->renderRow() ?>
          <?php echo $contact_form['name']->renderRow() ?>
          <?php echo $contact_form['email']->renderRow() ?>
          <?php echo $contact_form['message']->renderRow() ?>
          <?php echo $contact_form->renderHiddenFields() ?>
        </tbody>
        <tfoot>
          <tr>
            <td></td>
            <td><input class="submit_button" type="submit" /></td>
          </tr>
        </tfoot>
      </table>
    </form>
    <?php
    Et je pensais renseigner le champ "id" avec l'id souhaité.

    J'ai commencé comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
      public function executeShow(sfWebRequest $request)
      {
        $this->truc             = $this->getRoute()->getObject();
        $this->contact_form     = new ContactForm();
        $this->contact_form->id = $this->truc->getId();
      }
    Et je pensais qu'il serait facile de renseigner ensuite le champ id, de le cacher, et au moment d'envoyer mon message d'aller chercher l'adresse correspondant à l'id dans ma base...

    Alors première question : est-ce que c'est la bonne méthode (je débute sur symfony...) ?

    Deuxième question : comment renseigner mon champ 'id' ?

    Ah... et question bonus : je vais ensuite ajouter des validateurs pour m'assurer que le visiteur renseigne tout correctement.
    Comme mon formulaire est inclus dans une page (et pas sur une page spécifique de contact), comment rediriger mon formulaire sur cette même page en cas d'erreur ?

    Merci d'avance pour votre aide !
    Dernière modification par Caro-Line ; 08/04/2011 à 10h40. Motif: Mettre en résolu se fait en cliquant sur le bouton RESOLU pas en modifiant le titre

  2. #2
    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 peux mettre le code de ton form ?

  3. #3
    Invité
    Invité(e)
    Par défaut
    Le voilà :
    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
    27
     
    class ContactForm extends sfForm
    {
      public function configure()
      {
        $this->setWidgets(array(
          'id'      => new sfWidgetFormInput(),
          'name'    => new sfWidgetFormInput(),
          'email'   => new sfWidgetFormInput(),
          'message' => new sfWidgetFormTextarea(),
        ));
     
        $this->widgetSchema->setLabels(array(
          'name'    => 'Votre nom :',
          'email'   => 'Votre email :',
          'message' => 'Votre message :',
        ));  
     
        $this->widgetSchema->setNameFormat('contact[%s]');
     
        $this->setValidators(array(
          'name'    => new sfValidatorString(array('required' => false)),
          'email'   => new sfValidatorEmail(),
          'message' => new sfValidatorString(array('min_length' => 4)),
        ));
      }
    }

  4. #4
    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
    Je ne comprend pas trop comment tu comptes récupérer l'id du destinataire dans ton form alors qu'il s'affiche mais n'a pas de validateur. Et de plus il conviendrait que le scripteur du message connaisse l'id de l'enregistrement du destinataire. Peu probable.

    Il faut le passer en hiden.

    Une autre solution serait de le passer dans l'url de retour du message POST généré par la balise form. En effet, vus que l'on parse l'url au retour quelque soit le type de message (POST ou GET) tu peux renvoyer des informations par ce biais, elles seront analysée par le système de route. Ce qui évite qu'elles ne circulent dans des champs cachés mais potentiellement modifiables.

    Pour mettre une valeur dans un champs il faut faire un setDefault(). Pour la récupérer il faut un validateur, même si c'est un champ caché.

  5. #5
    Invité
    Invité(e)
    Par défaut
    En fait, l'id de mon destinataire est précisé dans l'url de ma page qui contient le formulaire de contact.

    Est ce que je peux récupérer cette valeur et l'utiliser dans mon formulaire ?

  6. #6
    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
    Non, il faut qu'elle soit dans l'id appelée par le form du formulaire

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

Discussions similaires

  1. Réponses: 11
    Dernier message: 10/01/2006, 07h23
  2. [Formulaire] de contact
    Par inferno66667 dans le forum Langage
    Réponses: 6
    Dernier message: 19/12/2005, 19h32
  3. Prob avec formulaire de contact
    Par inferno66667 dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2005, 18h53
  4. Prob avec PHP sur le formulaire de contact
    Par inferno66667 dans le forum Langage
    Réponses: 7
    Dernier message: 16/11/2005, 17h06
  5. Problème d'accès formulaire de contact
    Par Mystic26 dans le forum Langage
    Réponses: 7
    Dernier message: 16/09/2005, 16h47

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