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

Zend_Form PHP Discussion :

Formulaire sur toutes les pages


Sujet :

Zend_Form PHP

  1. #1
    Membre actif
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Points : 254
    Points
    254
    Par défaut Formulaire sur toutes les pages
    Bonjour à tous,

    J'ai un formulaire d'inscription à une newsletter qui se retrouve sur toutes mes pages. Pour ceci, j'ai utilisé une aide de vue dans laquelle je ne fais que retourner la création de mon formulaire, et j'utilise cette aide de vue dans mon layout.

    Mon aide de vue :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    class Zend_View_Helper_NewsletterForm {
     
        public function newsletterForm() {
            $f = new Application_Form_Newsletter();
            return $f;
        }
    }
    Et dans mon layout :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo $this->newsletterForm(); ?>
    Problème : comment traiter ce formulaire à présent ?
    J'ai essayé de le récupérer dans un controller :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if ($this->getRequest()->isPost() ) {
     
            $formData = $this->getRequest()->getPost();
        }
    ça fonctionne, mais je ne peux pas vérifier sa validité, puisque je n'ai pas crée ce formulaire dans ce controller, je ne peux donc pas faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if ($f->isValid($formData)) {
       //Traitement si valide
    }
    Toutefois, même si cela fonctionnait, cela voudrait dire qu'il faudrait que je traite le formulaire sur chacun de mes controller, ce qui ne me semble pas très pratique. Y a t-il une solution ? Je pensais partir vers les aides d'actions, mais je ne sais pas si c'est une bonne solution ?


    Question bonus, toujours sur Zend_Form :
    J'ai plusieurs formulaires par pages, par exemple un formulaire de connexion et le dit formulaire d'inscription à la newsletter.
    Pour traiter uniquement un seul formulaire, et le bon, la seule solution que j'ai trouvée est celles-ci (http://www.developpez.net/forums/d68...mulaires-page/) utiliser getParam() et des noms de submit différents. N'existe-il pas une solution "plus propre" ? Comme récupérer le nom/l'id du formulaire ?

    Par avance merci pour votre aide

  2. #2
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Ue action nest censé gérer qu un formulaire tu devrais donc envoyer tes formulaires vers des actions différentes.

    As tu essayé d initialiser une nouvelle instance de ton formulaire afin de l utiliser seulement pour vérifier les données?

  3. #3
    Membre actif
    Inscrit en
    Septembre 2009
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 43
    Points : 254
    Points
    254
    Par défaut
    Bonjour 5h4rk,

    As tu essayé d initialiser une nouvelle instance de ton formulaire afin de l utiliser seulement pour vérifier les données?
    Je viens d'essayer et ça fonctionne :

    Donc dans mon controller :
    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
    //Une fonction qui génère mon formulaire
        public function getForm() {
          $f = new Application_Form_Newsletter();
          return $f;
    }
     
    //Puis dans l'action
    if ($this->getRequest()->isPost() ) {
     
            $formData = $this->getRequest()->getPost();
     
            $f = $this->getForm();
     
            if ($f->isValid($formData)) {
                var_dump($formData);
            }
            else {
                echo 'erreur';
                $f->populate($formData);
            }
     
        }
    Si il y a erreur, j'ai bien le mot 'erreur' qui apparaît, et si le formulaire est valide, j'ai bien un var_dump de mes datas. Mais il y a tout de même un problème : les erreurs du formulaire (celle directement écrite dans le formulaire via les addValidator) ne s'affichent pas.
    Après avoir testé je me rend compte que pour que celles-ci s'affichent il faut que je crée le formulaire dans mon controller et que je le traite dans ce même controller, même action, pour que ce soit pris en compte.
    Ça me semble bien contraignant, j'ai raté un passage ?

    Ue action nest censé gérer qu un formulaire tu devrais donc envoyer tes formulaires vers des actions différentes.
    Pourquoi donc ? Est-ce une préconisation du ZF ?
    Il ne s'agit que d'un formulaire avec un input pour le mail et un submit. Je voudrais permettre à l'utilisateur de s'enregistrer sans qu'il quitte la page sur laquelle il se trouve et donc traiter ce formulaire directement sur la page en cours.

  4. #4
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Tu devrais peut être voir pour gérer le formulaire pour s'inscrire à la newletter en ajax, ce n'est que mon avis.

    Ce n'est pas une règle de développement pour un formulaire par action sous Zend mais en développement et particulièrement sous Zend il est recommandé un certain nombre de lignes par action ou méthode

Discussions similaires

  1. Réponses: 4
    Dernier message: 30/12/2008, 12h12
  2. [css]ecrire sur toutes les pages
    Par despe59 dans le forum Mise en page CSS
    Réponses: 3
    Dernier message: 28/06/2006, 14h01
  3. Réponses: 9
    Dernier message: 29/03/2006, 21h41
  4. La date sur toutes les pages
    Par philippef dans le forum Général JavaScript
    Réponses: 16
    Dernier message: 07/02/2006, 17h44

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