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