Bonjour,

Je souhaite effacer un Admin.
J'affiche déjà une liste des admins (dans un select).
Puis demande confirmation (avec un autre formulaire)

Il y a donc 2 vues.

Voici mon code :
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
 
//l'action qui va gérer ce que j'ai expliqué
public function removeAction()
    {
        $this->view->title = "Delete Admin";
        $this->view->headTitle($this->view->title, 'PREPEND');
 
        //si quelque chose est envoyée
        if ($this->getRequest()->isPost()) {
            $submit = $this->getRequest()->getPost('submit');
            $delete = $this->getRequest()->getPost('delete');
 
            //si l'action reçoi des donnée du select (la liste des admins)
            if ($submit == 'submit') {
                //on stoque l'id et le login
                $this->view->id = $this->getRequest()->getPost('it_id');
                $this->view->login = $this->getRequest()->getPost('it_login');
                //on appelle une méthode qui affiche du code et un formulaire de confirmation
                $form = $this->adminremoveconfirm();
                $this->view->form = $form;
 
               //si on reçoit un 'yes' alors on vient de confirmer la suppression
            } elseif ($delete == 'Yes') {
                $id = $this->getRequest()->getPost('id');
                $table = new Model_DbTable_ItStaff();
                $table->removeStaff($id);
            } else {
                $this->_redirect('admin');
            }
 
         //si rien n'ai reçu alors on affiche le select avec les noms des admins
        } else {
            $form = $this->adminForm();
            $this->view->form = $form;
            $table = new Model_DbTable_ItStaff();
            $form->populate($table->fetchAll()->toArray());
        }
    }
 
 
//le formulaire qui sera affiché en 1er avec la liste des admin
    public function adminForm()
    {
        $form = new Zend_Form($options = null);
        $form->setName('selectAdmin');
 
        $listAdmin = new Zend_Form_Element_Select('it_login');
        $listAdmin->setLabel("Admins'Name");
        $listAdmin->addMultiOption(NULL, 'Choose');
        $table_admin = new Model_DbTable_ItStaff();
        foreach ($table_admin->fetchAll() as $row) {
            $listAdmin->addMultiOption($row->it_id, $row->it_login);
        }
 
        $submit = new Zend_Form_Element_Submit('submit');
        $submit->setAttrib('idsubmit', 'submitbutton');
        $submit->setValue('submit');
 
        return $form->addElements(array($listAdmin, $submit));
    }
 
 
//cette fonction affiche un message d'avertissement et un formulaire de confirmation
    public function adminremoveconfirm()
    {
        $html = <<<HTMLDOC
            <p> Are you sure to delete this administrator :
                <?php echo $this->login; ?>
            </p>
            <form action="<?php echo $this->url(array('action'=>'remove')); ?>" method="post">
            <div>
                <input type="hidden" name="id" value="<?php echo $this->id; ?>" />
                <input type="submit" name="delete" value="Yes" />
                <input type="submit" name="delete" value="No" />
            </div>
            </form>
            <?php
HTMLDOC;
        return $html;
    }


Le problème c'est que les données ne vont pas au 2eme formulaire
En fait si mais des choses étranges,
un var_dump sur $this->getRequest()->getPost();
me donne : 15 [submit] => submit , le 15 étant l'id de mon admin, mais je n'arrive pas à le prendre...

Alors j'aimerais savoir cette structure est logique, ou si je dois utiliser une autre action pour séparer les 2 formulaires?

Dans ce cas, comment passer les paramètres (si possible en post) d'une action à l'autre