Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Bonjour
Avant ZEND j'utilisais le stysteme de SESSION classic , session_start(); ...
J'ai essayé le système de session ZEND mais la session n'est pas sauvergardé.
Puis je avoir un simple exemple .
Merci d'avance
Dernière modification par Karudev (25-11-2010 10:58:08)
Hors ligne
Zend_Session passe par un système d'espace de nommage :
Zend_Session gère comme son nom l’indique les Sessions et est une API qui permet de stocker des données de manière objet.
Zend_Session API et Zend_Session_Namespace sont distingués :
- Zend_Session permet de gérer les démarrages et les arrêts de la session, or Zend_Session_Namespace représente l’objet qui va contenir les données à stocker en session.
Deux possibilités de lancement de session:
- Soit on déclarer Zend_Session :: start() dans le Boostrap
- Soit on crée un nouvel espace de nommage :
Zend_Session_Namespace démarre la session par défaut.
Utilisation Zend_Session_Namespace :
-On crée l’objet en lui attribuant un nom de notre choix :
Ex : Dans IndexController.php
On envoi un tableau de données que l’on place dans une case de l’espace de nommage ‘admin’ que l’on nomme ‘user’.
$unNamespace = new Zend_Session_Namespace('admin'); $unNamespace->user = $data ; }
-Ensuite pour récupérer les données :
$unNamespace = new Zend_Session_Namespace('admin'); if(isset($unNamespace->user)){ $this->view->message = "Bonjour <font color=\"blue\">".$unNamespace->user->username." !</font><br />". "<h3>Infos :</h3><br><br><font color=\"blue\">Id : </font>". $unNamespace->user->id."<br><font color=\"blue\">Login : </font>". $unNamespace->user->username." <br><font color=\"blue\">Nom : </font>". $unNamespace->user->nom."<br>"; }
Dernière modification par mamady.kaba (25-11-2010 11:39:03)
Hors ligne
Malgré tout, Zend_Session stocke également dans $_SESSION par défaut.
Hors ligne
merci de ta réponse.
J'avais compris Zend_Session_Namespace.
Mais mon object Zend_Session_Namespace n'est pas sauvegardé quand je change de controller.
IndexController à ->RedactionController par exemple .
Sinon j'ai testé le classic
session_start();
echo $_SESSION['test'];
Effectivement ça marche
Dernière modification par Karudev (25-11-2010 11:22:57)
Hors ligne
Montre ton code dans IndexController et celui de RedactionController où tu définit et appel l'espace de nommage stp...
Hors ligne
//IndexController function init() { if (isset($_GET['id_contact']) and isset($_GET['id_employe']) and $_GET['id_contact']!=NULL and $_GET['id_employe']!=NULL) { $session = new Zend_Session_Namespace('default'); } else { $this->_redirect ('/error/connexion') ; } } function indexAction() { $this->view->title = 'APSIE Business plan'; $contact = new ContactTb(); $c=$contact->get_value(); $session->contact = $c; $this->view->nom_complet =$session->contact->nom_complet; $projet= new ProjetTb(); $p=$projet->get_value(); $account = new AccountsTb(); $a=$account->get_value(); }
//RedactionController function init() { //Variable de Session $session = new Zend_Session_Namespace('default'); $this->view->nom_complet =$session->contact->nom_complet; }
Hors ligne
J'ai retiré affectation de valeur $this->view->nom_complet mis dans la fonction init() et mis dans les actions respectives et ca marche apparemment.
Init() ne se lance pas par défault?
Dernière modification par Karudev (25-11-2010 11:45:09)
Hors ligne
Le prob est résolu merci pr ton aide
Hors ligne
Normalement si, init() est lancé par défaut.
Tu as bien IndexController extends Zend_Controller_Action ?
Parce que moi je n'ai fait aucun réglage préalable, en mettant init() il ré implémente la méthode init() qui est dans le Zend_Controller_Action
Hors ligne
ou ptet qu'il ne rentre pas dans le if de ton init()
Hors ligne