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 :

probleme d'envoi de formulaire [ZF 1.11]


Sujet :

Zend_Form PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Par défaut probleme d'envoi de formulaire
    Comme je ne suis pas forte en zend je vous demande de bien vouloir m'aider.

    Un autre problème recontré lors de la création de mon premier formulaire.

    On faite qu'on je fais submit pour le formulaire non rempli il m'affiche pour les champs obligatoire un message "la valeur est requise". mais quand je cliques pour la 2ème fois dans la barre de navigation il double le non du controlleur cad :

    http://localhost/projet/public/user/register

    mais apres un 2ème clique le mot user double

    http://localhost/projet/public/user/user/register

    et biensur "Page not found".

  2. #2
    Membre Expert
    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 : 40
    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
    Par défaut
    Bonjour,
    Commence par nous faire voir comment tu construits ton formulaire sinon ça risque d'être compliqué.

    Merci

  3. #3
    Membre éclairé
    Femme Profil pro
    Développeur Web
    Inscrit en
    Février 2004
    Messages
    282
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2004
    Messages : 282
    Par défaut
    Ok, je vous montre ce que j'ai fais mais avant tous je me suis servi par un code que je l'ai trouvé sur la toile et j'essai de l'adapter à mon cas. Il s'agit d'un formulaire de création d'un nouvel utilisateur ci-après le code :

    UserController.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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    <?php
     
    class UserController extends Zend_Controller_Action
    {
        public function indexAction()
        {      
            $this->view->RegisterForm = new Application_Form_UserRegister();
     
        }
          public function preDispatch() {
            if (Zend_Auth::getInstance()->hasIdentity()) {
                if ('logout' != $this->getRequest()->getActionName()) {
                    $this->_helper->redirector('index', 'index');
                }
            } else {
                if ('register' == $this->getRequest()->getActionName()) {
                    return false;
                }
                if (isset($_COOKIE['infoUser'])) {
                    $infoUser = unserialize(base64_decode($_COOKIE['infoUser']));
                    $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
                    $authAdapter->setTableName('users')
                            ->setIdentityColumn('email')
                            ->setCredentialColumn('password')
                            ->setIdentity($infoUser['email'])
                            ->setCredential($infoUser['password']);
                    $authAuthenticate = $authAdapter->authenticate();
                    if ($authAuthenticate->isValid()) {
                        $storage = Zend_Auth::getInstance()->getStorage();
                        $storage->write($authAdapter->getResultRowObject(null, 'password'));
                        $session = Zend_Registry::get('session');
                        $session->panier =  new Model_Panier_Panier();
                        if ($this->addToCartTemp()) {
                            return $this->_helper->redirector('index','panier');
                        }
                        $this->_helper->redirector('index','index');
                    }
                }
            }
        }
     
        public function registerAction() {
            $this->view->title = "Add New user";
            $form = new Application_Form_UserRegister ( );
            $this->view->form = $form;
            if ($this->_request->isPost ()) {
                $formData = $this->_request->getPost ();
                if ($form->isValid ( $formData )) {
                    $datas = $formData;
                    unset($datas['submit']);
                    unset($datas['password2']);
                    unset($datas['contrat']);
                    $datas['password'] = md5($datas['password']);
                    $email = $datas['email'];
     
                    $datas = array_map('strtolower', $datas);
                    $datas = array_map('ucwords', $datas);
                    $datas['email'] = $email;
                    $Users = new Application_Model_DbTable_Users() ;
     
                    $Users->insert($datas);
     
                    $email = $form->getValue('email');
                    $password = $form->getValue('password');
                    $authAdapter = new Zend_Auth_Adapter_DbTable(Zend_Db_Table::getDefaultAdapter());
                    $authAdapter->setTableName('users')
                            ->setIdentityColumn('email')
                            ->setCredentialColumn('password')
                            ->setCredentialTreatment('MD5(?)')
                            ->setIdentity($email)
                            ->setCredential($password);
                    $authAuthenticate = $authAdapter->authenticate();
                    $storage = Zend_Auth::getInstance()->getStorage();
                    $storage->write($authAdapter->getResultRowObject(null, 'password'));
                    $session = Zend_Registry::get('session');
                    $this->_helper->redirector('index','index');
                }
            }
        }
     
     
     
    }
    Deux formulaires :
    UserRegister.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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
     
    <?php
     
    class Application_Form_UserRegister extends Zend_Form
    {
     
        public function init()
        {
            $this->setName('UserRegister');        
            $this->setAction('user/register');
     
            $email = new Application_Form_EText ( 'email', 'Email : ' );
            $email  ->addValidator ( 'EmailAddress' )
                    ->addValidator(new Zend_Validate_Db_NoRecordExists('users','email'));
     
            $password = new Zend_Form_Element_Password ( 'password' );
            $password->setLabel ( 'Mot de passe : ')->setAttrib('maxlength', 10)->addFilter ( 'StripTags' )->addFilter ( 'StringTrim' )->setRequired ( true );
     
            $password2 = new Zend_Form_Element_Password ( 'password2' );
            $password2->setLabel('Vérification du mot de passe : ')->setAttrib('maxlength', 10)->addFilter ( 'StripTags' )->addFilter ( 'StringTrim' );
     
     
     
            $nom = new Application_Form_EText( 'nom', 'Nom : ' );
            $nom->addValidator('StringLength', false, array(6, 20));
     
            $prenom = new Application_Form_EText( 'prenom', 'Prenom : ' );
            $adresse = new Application_Form_EText( 'adresse', 'Adresse : ' );
     
            $codePostale = new Application_Form_EText( 'codePostale', 'Code Postale : ' );
            $codePostale->addValidator(new Zend_Validate_Regex('#[0-9]{2} ?[0-9]{3}#'));
     
            $ville = new Application_Form_EText( 'ville', 'Ville : ' );
     
            $telMobile = new Application_Form_EText( 'telMobile', 'Numéro de téléphone mobile : ' );
            $telMobile->setRequired(false)->addValidator('Digits')->addValidator(new Zend_Validate_StringLength(10));
     
            $telFixe = new Application_Form_EText( 'telFixe', 'Numéro de téléphone fixe : ' );
            $telFixe->setRequired(false)->addValidator('Digits')->addValidator(new Zend_Validate_StringLength(10));
     
            $newsletter = new Zend_Form_Element_Checkbox('newsletter');
            $newsletter->setLabel('je m\'abonne à la newsletter');
     
            $contrat = new Zend_Form_Element_Checkbox('contrat');
            $contrat ->setLabel('j\'accepte les termes de contrat')->setRequired(true);
     
            $submit = new Zend_Form_Element_Submit ( 'submit' );
            $submit->setAttrib ( 'class', 'submitbutton' )->setLabel ( 'Continuer' )->setAttrib('class', 'submit');
     
     
            $elements = array( $email, $password, $password2, $nom, $prenom, $adresse, $codePostale, $ville,  $contrat , $submit);  
     
            $this->addElements( $elements );
        }
     
     
        public function isValid($data) {
            $this->getElement('password')->addValidator(new App_Validate_PasswordMatch($data['password2']));
            if ($this->getElement('email')->getValue() == $data['email']) {
                $this->getElement('email')->removeValidator ( "Zend_Validate_Db_NoRecordExists" );
            }
            return parent::isValid($data);
        }
    }
     
    class App_Validate_PasswordMatch extends Zend_Validate_Abstract
    {
        const PASSWORD_MISMATCH = 'passwordMismatch';
        protected $_compare;
        protected $_messageTemplates = array(
                self::PASSWORD_MISMATCH => "PASSWORD_MISMATCH"
        );
        public function __construct($compare) {
            $this->_compare = $compare;
        }
        public function isValid($value) {
            $this->_setValue((string) $value);
            if ($value !== $this->_compare) {
                $this->_error(self::PASSWORD_MISMATCH);
                return false;
            }
            return true;
        }
    }
    EText.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
    18
    19
    20
    21
    22
    23
    24
     
    class Application_Form_EText extends Zend_Form_Element_Text
    {
     
        public function init()
        {
            /* Form Elements & Other Definitions Here ... */
     
        }
        public function __construct($options = null,$label) {
            parent::__construct($options);
     
                        $this->setLabel($label)
                             ->setAttrib('size', 40)
                             ->setAttrib('autocomplete', 'off')
                             ->setAttrib('maxlength', 30)                         
                             ->setRequired(true)
                             ->addFilter('htmlentities')                         
                             ->addValidator('StringLength', false,array(0,60))                
                             ->addFilter('StripTags')
                             ->addFilter('StringTrim');                
        }
     
      }
    register.phtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo	$this->form;?>
    index.phtml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?php echo	$this->RegisterForm;?>
    Autant de fois quand je clique ssur le bouton continuer dans la barre de navigation m'ajouter user/register

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

Discussions similaires

  1. Probleme d'envoi de formulaire :(
    Par billfake dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 4
    Dernier message: 30/08/2012, 18h38
  2. Probleme d'envoi formulaire
    Par Ariochs dans le forum Langage
    Réponses: 10
    Dernier message: 07/07/2008, 11h58
  3. Probleme d'envoi de variable dans un formulaire
    Par vivian dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 18/08/2006, 12h17
  4. Probleme d'envoie de formulaire
    Par wollverine dans le forum Balisage (X)HTML et validation W3C
    Réponses: 6
    Dernier message: 02/02/2005, 16h29

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