Codeigniter Tüm Flashdata Verilerini Aktarmak

Codeigniter Tüm Flashdata Verilerini Aktarmak Codeigniter session kütüphanesindeki keep_flashdata metodu ile flashdata verilerinin bir sonraki sayfaya aktarılmasını sağlayabiliyoruz. Peki ya tüm flashdata verilerini aktarmak istiyorsak?

Codeigniter session kütüphanesinde bir önceki sayfada atadığımız flashdata* verilerini bir sonraki sayfada kullanmak istediğimiz zaman keep_flashdata metodu imdadımıza yetişiyor. Fakat keep_flashdata metodu sadece parametre olarak gönderdiğimiz flashdata verisinde işlem yapıyor. Malesef Codeigniter ile tüm flashdata verilerini bir sonraki sayfada kullanmak üzere yeniden oluşturan bir fonksiyon/metod yok. Özellikle AJAX kullandığımız sayfalarda biz farkında olmadan flashdata verileri AJAX ile çağırdığımız sayfada kaybolduğundan çeşitli hatalara veya veri kayıplarına mahal verebilir.

Tüm flashdata'ları toplu halde bir sonraki sayfaya aktarmak için aşağıdaki keep_all_flashdata fonksiyonunu kullanabilirsiniz.

function keep_all_flashdata()
{
    $ci = & get_instance();
    foreach($ci->session->all_userdata() as $key => $value)
    {
        if(strpos($key, 'flash:old:') !== FALSE)
        {
            $key = str_replace('flash:old:', '', $key);
            $ci->session->keep_flashdata($key);
        }
    }
}

Fonksiyonu MY_Session.php dosyası içerisinde kullanabileceğiniz gibi benim yaptığım gibi bir helper dosyası içerisinde de kullanabilirsiniz. Aşağıdaki bağlantıdan session_helper.php dosyasını indirebilirsiniz.
 

session_helper.zip dosyasını indirmek için tıklayınız.


*Türkçe nasıl adlandıracağıma karar veremediğimden bu şekilde kullanmayı uygun gördüm.

Bu yazı en son 18 Şubat 2011 tarihinde düzenlenmiştir ve güncelliğini yitirmiş olabilir.

  • Erkan

    Merhaba güzel bir yazı olmuş.
    Fakat birşey sormak istiyorum set_flashdata ile türkçe karakter kullandığımda gönderdiğim mesajı sayfaya yazdıramıyorum tam tersi durumda sorun olmuyor benmi biryerlerde hata yapıyorum bilemedim bu konuda bir çözümünüz varmı acaba.

  • Mustafa Navruz

    Türkçe karakter sorunu olmaması gerekiyor. Metodu yanlış kullanıyor olabilirsiniz.
    $this->session->set_userdata('isim', 'değer');
    Metodun birinci parametresinde (yani yukarıdaki "isim" yazan yerde) Türkçe karakter problem çıkarabilir. İkinci parametre olan değer kısmında Türkçe karakter kullanmanızda bir mahsur yok.

blog comments powered by Disqus

© Mustafa Navruz 2011 0.0168 sn.

^ Başa Dön