Bonjour,
Je ne sais pas si c'est mon mal de tête du jour qui m'empêche de comprendre ce qui ne va pas mais je n'arrive pas à afficher les valeurs dans un formulaire à l'ouverture de la vue.

Contexte :
Une vue AccueilEtudiant contient un bouton "Compléter mes informations personnelles" qui renvoit sur l'action "infospersoAction" du contrôleur "AccueilEtudiantController".

Si je fais ce qui suit, cela fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
    public function infospersoAction()
    {
        $auth = Zend_Auth::getInstance();
        $username = $auth->getIdentity()->uti_login;
        $etudiant = new Application_Model_DbTable_Etudiant();
 
        $form = new Application_Form_Infosperso();
        $this->view->form = $form;
        $form->populate($etudiant->infosEtudiant($username));
Maintenant, le bouton "Mettre à jour qui se trouve au bas du formulaire InfosPerso devrait me renvoyer sur la même action, si j'en crois le tutoriel et qui fonctionne lui aussi.
Dans tutoriel-zf, il y a ceci :
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
    public function modifierAction()
    {
        $form = new Application_Form_Album();
        $form->envoyer->setLabel('Sauvegarder');
        $this->view->form = $form;
 
        if ($this->getRequest()->isPost()) 
        {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) 
            {
                $id = $form->getValue('id');
                $artiste = $form->getValue('artiste');
                $titre = $form->getValue('titre');
 
                $albums = new Application_Model_DbTable_Albums();
                $albums->modifierAlbum($id, $artiste, $titre);
 
                $this->_helper->redirector('index');
            } 
            else 
            {
                $form->populate($formData);
            }
        } 
        else 
        {
            $id = $this->_getParam('id', 0);
            if ($id > 0) 
            {
                $albums = new Application_Model_DbTable_Albums();
                $form->populate($albums->obtenirAlbum($id));
            }
        }
    }
J'essaie de faire le même genre de truc dans mon appli :
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
    public function infospersoAction()
    {
        $auth = Zend_Auth::getInstance();
        $username = $auth->getIdentity()->uti_login;
        $etudiant = new Application_Model_DbTable_Etudiant();
 
        $form = new Application_Form_Infosperso();
        $this->view->form = $form;
        //$form->populate($etudiant->infosEtudiant($username));
 
        $request = $this->getRequest();
        if ($request->isPost()) 
        {
            $formData = $this->getRequest()->getPost();
            if ($form->isValid($formData)) 
            {
                $values = $form->getValues();
            } // Fin if ($form->isValid($request->getPost()))
            else 
            {
                $form->populate($formData);
            }        
        } // Fin if ($request->isPost())
        else
        {
            $form->populate($etudiant->infosEtudiant($username));
 
        }
 
    } // Fin public function infospersoAction()
Et j'obtiens un formulaire avec toutes les zones vierges et le message de validation "Value is required and can't be empty" à chaque élément du formulaire.

Alors que je suis sensé afficher pour la première fois le formulaire, il semble que le programme passe quand même dans le if ($request->isPost()) et cherche à valider le formulaire au lieu de passer dans le else et de remplir le formulaire.

Si je décommente la ligne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
$form->populate($etudiant->infosEtudiant($username));
C'est à dire si je commence ma fonction exactement comme le premier cas qui fonctionne présenté plus haut dans le message, même résultat : formulaire vierge et erreurs de validation.

Quelqu'un peut m'expliquer ?