Bonjour à tous,
j'ai un problème de suppression de variable dans ma Session. Voilà ce que me retourne ma session :
array(
'Config' => array(
'userAgent' => '772728689246762826',
'time' => (int) 1418015249,
'countdown' => (int) 10
),
'Experiences' => array(
(int) 0 => array(
'intitule' => 'test',
'company' => 'test',
'begin' => '21/09/1991',
'end' => '21/09/1992',
'in_progress' => '0',
'status' => (int) 0,
'created' => '2014-12-08 01:58:36'
),
(int) 1 => array(
'intitule' => 'test',
'company' => 'test',
'begin' => '21/09/1991',
'end' => '21/09/1992',
'in_progress' => '0',
'status' => (int) 0,
'created' => '2014-12-08 02:07:28'
)
)
)
J'aimerais supprimer une des entrées contenues dans le tableau "Experiences" alors voilà comment j'arrive à faire fonctionner ça par exemple :
$this->Session->delete('Experiences.0');
Là, pas de problème mon entrée est bien supprimée, mais le problème est que mon 0 est contenu dans une variable PHP et je n'y arrive pas du tout alors voilà certains de mes essais qui ne fonctionnent pas :
$id = 0;
$var = $this->Session->read('Experiences')[$id];
$this->Session->delete($var);
$this->Session->delete('Experiences.' . $id);
// Ou encore
unset($var);
$_SESSION['Experiences'][$id] = null;
J'imagine que je m'y prend mal alors j'espère qu'un d'entre vous arrivera à trouver une solution à ce problème car je bloque complètement :)
Merci par avance...
Mmh bizarre car
$this->Session->delete('Experiences.' . $id);
Devrait marcher si 0 existe bien
Hello,
Tu veux supprimer toujours la première entrée de ton tableau ? toujours la dernière ? une particulière ?
Je viens de tester et chez moi ca marche parfaitement :
debug($this->Session->read('Auth.User'));
$id = 'parent_user_id';
$this->Session->delete('Auth.User.' . $id);
debug($this->Session->read('Auth.User'));
Dans le second debug() la clé 'parent_user_id' et sa valeur ont bien été supprimee.
Si tu utilises cakephp, il faut suivre la façon de faire du SessionComponent::delete
Par contre si tu veux supprimer une entrée/plusieurs entrées qui ont une caractéristique, tu peux faire un foreach
$data = array(
'Experiences' => array(
array(
'intitule' => 'test',
'company' => 'test',
'begin' => '21/09/1991',
'end' => '21/09/1992',
'in_progress' => '0',
'status' => 0,
'created' => '2014-12-08 01:58:36'
),
array(
'intitule' => 'test',
'company' => 'test22222222',
'begin' => '21/09/1991',
'end' => '21/09/1992',
'in_progress' => '0',
'status' => 0,
'created' => '2014-12-08 01:58:36'
),
)
);
$this->Session->write($data);
debug($this->Session->read('Experiences'));
foreach ($this->Session->read('Experiences') as $k => $experience)
{
if(isset($experience['company']) && $experience['company'] == 'test')
{
$this->Session->delete('Experiences.' . $k);
}
}
debug($this->Session->read('Experiences'));
Il m'a correctement supprimé de la session la première entrée qui avait 'company' == 'test',
Je viens de tester ce code sur un cakephp 2 et ca fonctionne.