Le composant session de CakePHP fournit le moyen de faire persister les données client entre les pages requêtées. Il agit comme une interface pour $_SESSION et offre aussi des méthodes pratiques pour de nombreuses fonctions relatives à $_SESSION.
Les sessions peuvent persister de différentes façons. Par défaut, elles utilisent les paramètres fournis par PHP, cependant, d’autres options existent.
Sauvegarde les fichiers de session dans votre dossier tmp/sessions de app.
Utilise les sessions en base de données de CakePHP
Utilise le moteur de cache configuré par Cache::config(). Très utile quand utilisé conjointement avec Memcache (dans les configurations avec des multiples serveurs d’applications) pour stocker à la fois les données mises en cache et les sessions.
C’est le paramètre par défaut. Sauvegarde les fichiers de session comme indiqué dans php.ini
Pour changer la méthode de manipulation des session par défaut, changez la configuration de Session.save selon vos objectifs. Si vous choisissez “database”, vous devriez aussi décommenter les paramètres de Session.datababase et exécuter le fichier SQL de base de données de session qui se trouve dans app/config.
Le composant Session est utilisé pour interagir avec les informations de session. Il inclut les fonctions CRUD basiques, mais aussi des fonctionnalités pour créer des messages de feedback aux utilisateurs.
Il est important de noter que ces structures en tableaux peuvent être créées dans la session en utilisant la notation avec un point. Par exemple, Utilisateur.identifiant se réfèrera au tableau suivant :
array('Utilisateur' =>
array('identifiant' => '[email protected]')
);
Les points sont utilisés pour indiquer les tableaux imbriqués. Cette notation est utilisée pour toutes les méthodes du composant Session dans lesquelles une variable $name est utilisée.
write($name, $value)
Ecrit dans la Session, en mettant $value dans $name. $name peut-être un tableau séparé par un point. Par exemple :
$this->Session->write('Personne.couleurYeux', 'Vert');
Cela écrit la valeur “Vert” dans la session sous Personne => couleurYeux.
setFlash($message, $element = 'default', $params = array(), $key = 'flash')
Utilisé pour définir une variable de session qui peut être utilisée pour
un rendu dans la Vue. $element vous permet de contrôler quel élément
(situé dans /app/views/elements
) doit être utilisé pour le rendu du
message. Si vous laissez $element
sur “default”, le message sera
encadré par ce qui suit :
<div id="flashMessage" class="message"> [message] </div>
$params vous permet de passer des variables additionnelles pour le gabarit rendu. $key place l’index $messages dans le tableau Message. Par défaut, c’est “flash”.
Des paramètres peuvent être passés pour modifier le div
rendu, par
exemple, ajouter « class » dans le tableau $params, affectera une classe
CSS au div
de sortie, en utilisant $session->flash()
dans votre
gabarit ou votre vue.
$this->Session->setFlash('Message textuel d\'exemple', 'default', array('class' => 'classe_exemple'))
Le résultat après utilisation de $session->flash()
avec l’exemple
ci-dessus devrait être :
<div id="flashMessage" class="classe_exemple">Message textuel d'exemple</div>
read($name)
Retourne la valeur de $name dans la session. Si $name vaut null, la session entière sera retournée. Par ex :
$vert = $this->Session->read('Personne.couleurYeux');
Récupère la valeur « vert » dans la session.
check($name)
Utilisé pour vérifier qu’une variable de Session a été créée. Retourne vrai si la variable existe et faux dans le cas contraire.
delete($name) /*ou*/ del($name)
Supprime les données de Session de $name. Par ex :
$this->Session->del('Personne.couleurYeux');
Notre donnée de session n’a plus la valeur “Vert” ni même l’index couleurYeux attribué. Cependant, le modèle Personne est toujours dans la Session. Pour supprimer de la session toutes les informations de Personne, utilisez :
$this->Session->del('Personne');
La méthode destroy
supprimera le cookie de session et toutes les
données de session stockées dans le fichier temporaire du système. Cela
va détruire la session PHP et ensuite en créer une nouvelle.
$this->Session->destroy()
error()
Utilisé pour déterminer la dernière erreur dans une session.