Bonjour,

Je débute en ZF.
J'ai voulu démarrer et refaire pas à pas l'application zfbook.
J'ai d'abord voulu le faire simplement sans aucunes vérification de droits, caches sessions.

Juste ajouter/modifier une réservation.

Mais j'arrive à comprendre comment modifier (c'est ok). Mais lors de l'ajout d'une reservation, cela me sort une erreur. Je ne comprends pas d'où sort le problème.

Le contrôleur :
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
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
<?php
 
class ReservationController extends Zend_Controller_Action
{
	private $_reservationTable;
 
    public function init()
    {
        $this->view->titre = "Réservation des salles";
        $this->view->setEscape('stripslashes');
 
        $this->_reservationTable = new Application_Model_DbTable_Reservation();
 
        $this->_helper->viewRenderer->setNoRender(false);
    }
 
    public function indexAction()
    {
        $this->view->titre = "Application exemple du livre Zend Framework";
    }
 
    public function listAction()
    {
        $this->view->titre = "Liste des réservations";
 
        $roomListTable = new Application_Model_DbTable_Room();
        $rooms = $roomListTable->fetchAll()->toArray();
        $Troom = array();
        foreach ($rooms as $room) {
        	$Troom[$room['id']] = $room["name"];
        }
        $this->view->rooms = $Troom;
 
        $userListTable = new Application_Model_DbTable_User();
        $users = $userListTable->fetchAll()->toArray();
        $Tuser = array();
        foreach ($users as $user) {
        	$Tuser[$user['id']] = $user["firstname"]." ".$user["lastname"];
        }
        $this->view->users = $Tuser;
 
        $reservations = $this->_reservationTable->fetchAll()->toArray();
 
 
        // Gestion de la pagination
        $paginator = Zend_Paginator::factory($reservations);
        $paginator->setItemCountPerPage(5);
        $paginator->setCurrentPageNumber($this->getRequest()->getParam('page'));
        $this->view->reservations = $paginator;
    }
 
    public function editAction()
    {
    	// Récupération des paramètres et de la réservation à éditer si nécessaire.
        $params = $this->getRequest()->getParams();
        $isUpdate = isset($params['r']);
        if ($isUpdate) {
            $params['r'] = (int)$params['r'];
 
            $this->view->titre = "Editer une réservation existante";
            $reservation = $this->_reservationTable->find((int)$params['r'])->current();
        } else {
            $this->view->titre = "Ajouter une réservation";
 
            // Création d'une réservation vide s'il s'agit d'un ajout
            $reservation = $this->_reservationTable->createRow();
        }
 
        // Création du formulaire et déclaration des paramètres généraux
        $form = new Application_Form_AjoutRes();
        $form->setAction($this->view->link('reservation' , 'edit', null, '', 'default', !$isUpdate))
             ->setMethod('post')
             ->setDefaults($reservation->toArray());
 
        // Création du formulaire et ajout/suppression
        if ($this->getRequest()->isPost() && $form->isValid($_POST)) {
 
            $values = $form->getValues();
            $values['creator'] = 1;
            $reservation->setFromArray(array_intersect_key($values, $reservation->toArray()));
 
            $reservation->save();
 
            // Redirection vers la liste des réservations
            $this->_helper->redirector("list");
        }
 
        // Assignation du formulaire pour affichage
        $this->view->form = $form;
    }
 
    public function deleteAction()
    {
        // Récupération de l'identifiant de la
        // réservation à supprimer
        $params = $this->getRequest()->getParams();
        $idReservation = (int)$params['r'];
 
        $this->_reservationTable->delete("id=$idReservation");
 
        // Redirection sur la page précédente
        $this->_helper->redirector("list");
    }
 
 
}
la BDD :
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
<?php
 
class Application_Model_DbTable_Reservation extends Zend_Db_Table_Abstract
{
 
    /**
     * Nom de la table (vue)
     *
     * @var string
     */
    protected $_name = 'reservation';
 
    protected $_primary = 'id';
 
 
	public function obtenirReservation($id) {
    	$id = (int)$id;
    	$row = $this->fetchRow('id = '.$id);
    	if(!$row) {
    		throw new Exception("Impossible de trouver l'enregistrement");
    	}
 
    	return $row->toArray();
    }
 
    public function ajouterReservaton($room, $usage, $datebegin, $dateend, $creator) {
    	$data = array(
    		"id_room" => $room,
    		"usage" => $usage,
    		"date_begin" => $datebegin,
    		"date_end" => $dateend,
    		"creator" => $creator
    	);
 
    	$this->insert($data);
    } 
}
Les fonctions ne servent à rien mais c'était avant....

Es-ce que quelqu'un peux me donner une voix ?

Merci