2011-06-15 12 views
5

Ben aşağıdaki varsa,CakePHP - Oturumda diziyi nasıl ittirirsiniz? Ben bunu nasıl

$this->Session->write('ScoreCardCriteria', 'test'); 

Ve öğelerin bir dizi olarak ScoreCardCriteria için başka bir öğe eklemek istiyorum?

$_SESSION['ScoreCardCriteria'][] = 'test'; 

gibi düzenli PHP ile

, O olurdu bir şey bu geldi:

$new_array = array_merge((array)$this->Session->read('ScoreCardCriteria'), array('test')); 
    $this->Session->write('ScoreCardCriteria', $new_array); 

Ama yapmak daha "kek" yolu olsaydı çok isterdim o.

+0

Geldiğim yöntem pek işe yaramadı. Sadece tüm değerlerin üzerine yazdı ... –

cevap

12

Bunu yapabilirsiniz: o zaman

$this->Session->write('ScoreCardCriteria', array('test')); 

Ve:

$data = $this->Session->read('ScoreCardCriteria'); 
$data[] = 'test'; 
$this->Session->write('ScoreCardCriteria', $data); 

Ancak oldukça dürüst olmak gerekirse, CakePHP içten $ _SESSION nesnesi kullanır ve sadece varsayılan oturum işleyicileri geçersiz kılar. ->write'un yapması gereken tek şey, yaptığınız bir nokta noted set yolunu (foo.bar.x gibi görünecek) ayrıştırmaktır. Ve belirli değerleri izliyorsanız echo hata ayıklama bilgileri. Doğrudan $_SESSION'u değiştirirseniz zarar vermemelidir.

+0

Bunun neden reddedildiğini bilen var mı? Bu, 7 dakika sonra ilan edilen ve oy kullanmayan diğer cevaplarla neredeyse aynı. –

+0

Emin değilim ... ne yaptım ve harika çalıştı. Teşekkürler –

+0

Rica ederim. Birkaç kişiden şikayet ettiğimden bu yana yine de oy kullandım :). -1'i hak etmek için yanlış yaptığımı merak ettim –

2

Oturum verilerini okumanız ve ardından eklenecek verilerinizle birleştirmeniz gerekir. Ayrıca oturum verilerinin var olup olmadığını da kontrol etmelisiniz:

if ($this->Session->check('ScoreCardCriteria')) { 
    $this->Session->write('ScoreCardCriteria', am(
     $this->Session->read('ScoreCardCriteria'), 
     array('test') 
    )); 
} else { 
    $this->Session->write('ScoreCardCriteria', array('test')); 
} 

Yardım etmenizi umuyoruz.