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 Framework PHP Discussion :

Zend_Form_Element requires each element to have a name


Sujet :

Zend Framework PHP

  1. #1
    Nouveau membre du Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2012
    Messages : 44
    Points : 31
    Points
    31
    Par défaut Zend_Form_Element requires each element to have a name
    Bonjour,
    voila pour la rentrée developpement appli sur zend v1
    mais voila c'est comme le velo on est senser pas oublier mais non!

    alors mon soucis le voila
    mon appli fonctionne en crud :mais voila qu en j'essae d'uploader un nouveau client
    ERRRRRROR :An error occurred
    Application error
    Exception information:

    Message: Zend_Form_Element requires each element to have a name
    je sais pas d'ouvient l'erreur :
    voila mon liste bien avec fetcAll
    mais ajout d'un client m'affiche l'erreur

    mon form/Address.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
    <?php
     
    class Application_Form_Address extends Zend_Form
    {
     
        public function init()
        {
            $this->setName('address');
     
            $id=new Zend_Form_Element_Hidden($id);
            $id->addFilter('int');
     
            $first_name=new Zend_Form_Element_Text('first_name');
            $first_name->setLabel('First_name')
                        ->setRequired(TRUE)
                        ->addFilter('StripTags')
                         ->addFilter('StringTrim')
                         ->addValidator('NotEmpty');
     
             $last_name=new Zend_Form_Element_Text('last_name');
             $last_name->setLabel('Last_name')
                        ->setRequired(TRUE)
                        ->addFilter('StripTags')
                         ->addFilter('StringTrim')
                         ->addValidator('NotEmpty');
     
             $email=new Zend_Form_Element_Text('email');
              $email->setLabel('Email')
                        ->setRequired(TRUE)
                        ->addFilter('StripTags')
                         ->addFilter('StringTrim')
                         ->addValidator('NotEmpty');
     
              $phone=new Zend_Form_Element_Text('phone');
              $phone->setLabel('Phone')
                        ->setRequired(TRUE)
                        ->addFilter('StripTags')
                         ->addFilter('StringTrim')
                         ->addValidator('NotEmpty');
     
               $address=new Zend_Form_Element_Textarea('address');
               $address->setLabel('Address')
                        ->setRequired(TRUE)
                        ->addFilter('StripTags')
                         ->addFilter('StringTrim')
                         ->addValidator('NotEmpty');
     
              $created=new Zend_Form_Element_Text('created');
              $created->setLabel('Created')
                        ->setRequired(TRUE)
                        ->addFilter('StripTags')
                         ->addFilter('StringTrim')
                         ->addValidator('NotEmpty');
     
               $modified=new Zend_Form_Element_Text('modified');
             $modified->setLabel('Modified')
                        ->setRequired(TRUE)
                        ->addFilter('StripTags')
                         ->addFilter('StringTrim')
                         ->addValidator('NotEmpty');
     
     
             $envoyer=new Zend_Form_Element_Submit('envoyer');
             $envoyer->setAttrib('id', 'bouttonenvoyer');
     
             $this->addElement(array($id,$first_name,$last_name,$email,$phone,$address,$created,$modified));
            /* Form Elements & Other Definitions Here ... */
        }
     
     
    }
    model/address.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     public function ajouterAddress ($first_name,$last_name,$email,$phone,$address,$created,$modified){
                $data=array(
                  'first_name'=>$first_name,
                    'last_name'=>$last_name,
                    'email'=>$email,
                    'phone'=>$phone,
                    'address'=>$address,
                    'created'=>$created,
                    'modified'=>$modified
                );
                $this->insert($data);
            }
    ainsi que 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
    23
    24
    25
    26
    public function ajouterAction()
        {
            // ajout d une nouvelle entrée dans la table
            $form = new Application_Form_Address();
        $form->envoyer->setLabel('Ajouter');
        $this->view->form = $form;
     
        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
                $first_name = $form->getValue('first_name');
                $last_name = $form->getValue('last_name');
                 $email = $form->getValue('email');
                $phone = $form->getValue('phone');
                 $address = $form->getValue('address');
                 $created = $form->getValue('created');
                $modified = $form->getValue('modified');
                $entry = new Application_Model_DbTable_Address();
                $entry->ajouterAddress($first_name,$last_name,$email,$phone,$address,$created,$modified);
     
                $this->_helper->redirector('index');
            } else {
                $form->populate($formData);
            }
        }
        }
    et voili alors je sollicite votre aide merci d'avance

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Bonjour,

    Ligne 66 de ton formulaire, tu passes à la méthode addElement un tableau de tes éléments de formulaire déjà créé, or addElement attends un nom pour ce champ ou un objet Zend_Form_Element, d'où l'exception.

    La confusion vient probablement du fait que c'était addElements que tu voulais appeler, cette méthode prenant en paramètre un tableau de Zend_Form_Element ou un tableau de définitions d'éléments de formulaire.

    En gros, rajoute un s et ça devrait le faire La réponse était dans le message d'erreur pour le coup, qui devait te pointer la ligne qui cause soucis.

  3. #3
    Nouveau membre du Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2012
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    Merci maitre corbeau de votre reponse mais cela ne change rien:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $this->addElements(array($id,$first_name,$last_name,$email,$phone,$address,$created,$modified));

  4. #4
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Bonsoir, on pourrait avoir le message d'erreur exact, idéalement avec le numéro de la ligne concernée et un copier coller de la dite ligne ?

  5. #5
    Nouveau membre du Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2012
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    voici la page d'erreur complete :
    Application error
    Exception information:

    Message: Zend_Form_Element requires each element to have a name
    Stack trace:

    #0 C:\wamp\www\payre-app\application\forms\Address.php(10): Zend_Form_Element->__construct(NULL)
    #1 C:\ZendFramework-1.11.11\library\Zend\Form.php(240): Application_Form_Address->init()
    #2 C:\wamp\www\payre-app\application\controllers\IndexController.php(21): Zend_Form->__construct()
    #3 C:\ZendFramework-1.11.11\library\Zend\Controller\Action.php(516): IndexController->ajouterAction()
    #4 C:\ZendFramework-1.11.11\library\Zend\Controller\Dispatcher\Standard.php(295): Zend_Controller_Action->dispatch('ajouterAction')
    #5 C:\ZendFramework-1.11.11\library\Zend\Controller\Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
    #6 C:\ZendFramework-1.11.11\library\Zend\Application\Bootstrap\Bootstrap.php(97): Zend_Controller_Front->dispatch()
    #7 C:\ZendFramework-1.11.11\library\Zend\Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
    #8 C:\wamp\www\payre-app\public\index.php(26): Zend_Application->run()
    #9 {main}

    Request Parameters:

    array (
    'controller' => 'index',
    'action' => 'ajouter',
    'module' => 'default',
    cela fait un moment que j'ai pas toucher a zend si vous trouvez l'erreur pouvez vous me la commentez svp

  6. #6
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Effectivement, la ligne 10 du formulaire c'est celle là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $id=new Zend_Form_Element_Hidden($id);
    Tu as probablement écrit $id au lieu de 'id', $id n'étant pas défini il lève l'exception, mais tu aurais probablement eut un soucis similaire avec le addElement final également.

  7. #7
    Nouveau membre du Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2012
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    j’essaie et je vous dis, mais restez la master crow au cas ou

    une nouvelle erreur m'affiche dans le controleur:
    Fatal error: Call to a member function setLabel() on a non-object in C:\wamp\www\payre-app\application\controllers\IndexController.php on line 22
    (Comment as tu reconnu l'erreur stp ?)

  8. #8
    Nouveau membre du Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2012
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    j'affiche le controleur mais pourtant j'avais refait le tuto et essaye de l'adapter pour mon appli le tuto m'affiche aucune erreur?
    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
    <?php
     
    class IndexController extends Zend_Controller_Action
    {
     
        public function init()
        {
            /* Initialize action controller here */
        }
     
        public function indexAction()
        {
            // affichage de la table
            $address=new Application_Model_DbTable_Address();
            $this->view->address=$address->fetchAll();
        }
     
        public function ajouterAction()
        {
            // ajout d une nouvelle entrée dans la table
            $form = new Application_Form_Address();
        $form->envoyer->setLabel('Ajouter');
        $this->view->form = $form;
     
        if ($this->getRequest()->isPost()) {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) {
                $first_name = $form->getValue('first_name');
                $last_name = $form->getValue('last_name');
                 $email = $form->getValue('email');
                $phone = $form->getValue('phone');
                 $addresse = $form->getValue('addresse');
                 $created = $form->getValue('created');
                $modified = $form->getValue('modified');
                $entry = new Application_Model_DbTable_Address();
                $entry->ajouterAddress($first_name,$last_name,$email,$phone,$addresse,$created,$modified);
     
                $this->_helper->redirector('index');
            } else {
                $form->populate($formData);
            }
        }
        }
     
        public function modifierAction()
        {
            // action body
        }
     
        public function supprimerAction()
        {
            // action body
        }
     
     
    }

  9. #9
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Pour déterminer d'où venait l'erreur, le message indique que l'exception a été levée à la ligne 10 du formulaire, dans la méthode __construct() :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #0 C:\wamp\www\payre-app\application\forms\Address.php(10): Zend_Form_Element->__construct(NULL)
    Ça permet de beaucoup plus facilement retrouver le soucis...

    Pour la seconde erreur dans le contrôleur, ça signifie simplement que $form->envoyer n'est pas un Zend_Form_Element, et il n'a donc pas de méthode setLabel.

    Et pour cause, tu as oublié d'ajouter le bouton submit à tes éléments de formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->addElements(array($id,$first_name,$last_name,$email,$phone,$address,$created,$modified));
    Quant à répondre au pourquoi ça marche dans le tuto et pas une fois adapté à ton appli, c'est très probablement que tu as ajouté quelques petites erreurs ici et là lors de l'adaptation

    Quand tu es dans une démarche d'adapter du code existant, essaye déjà de le transposer tel quel sans le modifier, et d'effectuer les changements un par un et les tester à chaque fois.

    Si tu fais beaucoup de modifications avant de tester, tu vas vite perdre le fil et ne plus comprendre là où les choses se sont mal passées.

    À partir de là, il suffit d'analyser les messages d'erreur et les exceptions, dans l'écrasante majorité des cas tu sauras quelle ligne pose soucis et ça devrait te permettre de solutionner le problème. Même si au début ça prends du temps de comprendre le soucis... rien n'empêche de tâtonner un peu.

  10. #10
    Nouveau membre du Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2012
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    je comprend pas trés bien ta réponse pour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->addElements(array($id,$first_name,$last_name,$email,$phone,$address,$created,$modified));
    il faudrait aussi que j'attribue mes élements dans mon
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $envoyer=new Zend_Form_Element_Submit('envoyer');
             $envoyer->setAttrib

  11. #11
    Nouveau membre du Club
    Femme Profil pro
    Webmaster
    Inscrit en
    Février 2012
    Messages
    44
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Centrafrique

    Informations professionnelles :
    Activité : Webmaster
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Février 2012
    Messages : 44
    Points : 31
    Points
    31
    Par défaut
    tu avais raison :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $this->addElements(array($id,$first_name,$last_name,$email,$phone,$address,$created,$modified));
    +$envoer

    le problème et quand je passe du temps sur des erreurs sans voir le bout je cherche même plus je veut une réponse avec des explications . Merci a toi pour ton temps et ta pédagogie

  12. #12
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    You're welcome !

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 04/06/2015, 12h27
  2. Element de formulaire et Name dynamique sous IE
    Par khadir dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 14/08/2008, 11h12
  3. [JDOM]Element names cannot contain colons.
    Par mrbungle dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 15/03/2007, 14h15
  4. for each element d'une table
    Par jm_force dans le forum Access
    Réponses: 5
    Dernier message: 17/08/2006, 10h30
  5. comment auto-incrémenté un "element name"
    Par yos dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 30/12/2005, 09h21

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