Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 26-01-2011 13:15:39

timo
Nouveau membre
Date d'inscription: 26-01-2011
Messages: 2

[RESOLU] probleme formulaire avec zend ne s'affiche pas!!!

Bonjour,
je viens de basculer vers zend framwork, et j'avoue que je trouve les formulaire pas du tout évident.
donc j'ai suivi la doc zend pour faire un formulaire d'inscription, mais rien ne s'affiche.
voici  les 3 fichier utiliser: dossier forms contient le fichier InscriptionForm.php

Code:

<?php


class InscriptionForm extends Zend_Form
{
    
    public function init()
    {
        //instantion de l'objet form
        $form= new Zend_Form();        
        $form->setAction('/resource/process')
             ->setMethod('post');
        
        //élement nom
        $nom = $form->createElement('text','nom'); 
        $nom->addValidator('alnum')
            ->addValidator('regex', false, array('/^[a-z]+/'))
            ->addValidator('stringLength', false, array(6, 20))
            ->setRequired(true)
            ->addFilter('StringToLower');

       //élement email
        $email = $form->createElement('text','email');
           $email->addValidator('alnum')
             ->addValidator('regex', false, array('/^[a-z]+/'))
             ->addValidator('stringLength', false, array(6, 20))
             ->setRequired(true)
             ->addFilter('StringToLower');

        //élement password
        $password= $form->createElement('password','password');
        $password->addValidator('StringLength', false, array(6))
                  ->setRequired(true);

        //Ajout des elements au formulaire
        $form->addElement($nom)
             ->addElement($email)
             ->addElement($password)
             ->addElement('submit', 'submit', array('label' => 'Enregistrer'));
    }

    
    
}


?>

mon controlleur InscriptionController.php

Code:

<?php

require_once(dirname(__FILE__)."/../../../forms/InscriptionForm.php");
//include 'forms/InscriptionForm.php';

class Membres_InscriptionController extends Zend_Controller_Action
{
        
    public function getForm()
    {
        //création du formulaire
        $form= new InscriptionForm();
        return $form;
    }
        
    public function indexAction()
    {
        $this->view->form= $this->getForm();
        $this->render('form');
    }
    
    public function inscriptionAction()
    {
        if(!$this->getRequest()->isPost()){
            return $this->_forward('index');
        }
        
        $form= $this->getForm();
        if(!$form->isValid($_POST)){
            //Echec de la validation
            $this->view->form= $form;
            return $this->render('form');
        
        }
        
        //recuperation des valeurs
        $values = $form->getValues();
        
    }

    public function sauveAction()
    {
    }
}


?>

ma vue dans le dossier inscription j'ai mis form.phtml

Code:

<h2>Identifiez vous</h2>
<?php 
echo $this->form;

?>


le pb c'est qu'il m'affiche que Identifiez vousmais il y a pas le formulaire qui apparait, sauriez vous pourkoi??
merci pour vos réponses

Dernière modification par timo (26-01-2011 17:47:06)

Hors ligne

 

#2 26-01-2011 14:31:04

shadypierre
Membre
Date d'inscription: 24-03-2010
Messages: 617

Re: [RESOLU] probleme formulaire avec zend ne s'affiche pas!!!

Bonjour, utilise les balise [ code ] stp wink

Pourtant les formulaires c'est pas vraiment compliqué, te prend pas la tete fait un truc dans le genre

Code:

<?php
// le formulaire
class My_Form_Inscription extends Zend_Form
{
    public function init()
    {
        $this->addElements(array(
            new Zend_Form_Element_Text('givenName', array(
                'required'   => true,
                'label'      => 'Nom:',
            )),
        ));

        
        $this->setAction('/resource/process')
             ->setMethod('post');
    }
}
?>

Code:

<?php
// le controller
class InscriptionController extends Zend_Controller_Action
{
        
    public function getForm()
    {
        //création du formulaire
        $form= new My_Form_Inscription();
        return $form;
    }
        
    public function indexAction()
    {
        $this->view->form= $this->getForm();
    }
    
    public function inscriptionAction()
    {
        if(!$this->getRequest()->isPost()){
            return $this->_forward('index');
        }
        
        $form= $this->getForm();
        if(!$form->isValid($_POST)){
            //Echec de la validation
            $this->view->form= $form;
            return $this->_forward('index');
        }
        
        //recuperation des valeurs
        $values = $form->getValues();
        
    }
}
?>

Code:

<?php
// la vue
?>
<h2>Identifiez vous</h2>
<?php echo $this->form; ?>

ps : si tu n'a pas l'autoload des classe il faut faire le include du formulaire dans le controller

Dernière modification par shadypierre (26-01-2011 16:02:42)

Hors ligne

 

#3 26-01-2011 15:03:07

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: [RESOLU] probleme formulaire avec zend ne s'affiche pas!!!

Je pense que ton erreur viens du fait que tu crée un objet Zend_Form dans ton ta classe InscriptionForm qui dérive de Zend_Form. Tu créée donc dans ton formulaire un formulaire (ta variable $form) qui est détruit lors de la fin de ta fonction au lieu d'initialiser ton formulaire avec tes éléments.
Donc si tu supprimes la ligne $form= new Zend_Form(); et que tu remplaces les utilisations de $form par $this cela devrait fonctionner:

Code:

class InscriptionForm extends Zend_Form
{

    public function init()
    {
        //instantion de l'objet form
        $this->setAction('/resource/process')
             ->setMethod('post');

        //élement nom
        $nom = $form->createElement('text','nom');
        $nom->addValidator('alnum')
            ->addValidator('regex', false, array('/^[a-z]+/'))
            ->addValidator('stringLength', false, array(6, 20))
            ->setRequired(true)
            ->addFilter('StringToLower');

       //élement email
        $email = $form->createElement('text','email');
           $email->addValidator('alnum')
             ->addValidator('regex', false, array('/^[a-z]+/'))
             ->addValidator('stringLength', false, array(6, 20))
             ->setRequired(true)
             ->addFilter('StringToLower');

        //élement password
        $password= $form->createElement('password','password');
        $password->addValidator('StringLength', false, array(6))
                  ->setRequired(true);

        //Ajout des elements au formulaire
        $this->addElement($nom)
             ->addElement($email)
             ->addElement($password)
             ->addElement('submit', 'submit', array('label' => 'Enregistrer'));
    }



}

Hors ligne

 

#4 26-01-2011 17:46:32

timo
Nouveau membre
Date d'inscription: 26-01-2011
Messages: 2

Re: [RESOLU] probleme formulaire avec zend ne s'affiche pas!!!

merci pour les deux réponses qui marche bien,
effectivement fallait remplace le $form par le $this
merci encore smile

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages