Eylemler arasında Zend Oturum verilerine erişme

2 Cevap php

Here's my problem - I'm trying to access a session namespace across actions. The ZF examples appear to work by generating NEW namespaces, but they only demonstrate this within one action - but how do I access an existing namespace from a separate action? Here's the code:

public function indexAction(){
    $defaultNamespace = new Zend_Session_Namespace('dingdangdoo');

    if (isset($defaultNamespace->numberOfPageRequests)) {
        // this will increment for each page load.
        $defaultNamespace->numberOfPageRequests++;
    } else {
        $defaultNamespace->numberOfPageRequests = 1; // first time
        }

    echo "Page requests this session: ",
    $defaultNamespace->numberOfPageRequests;
}

Bu iyi - ama başka bir Controller / Action çift yapmak istiyorsanız, nasıl $ defaultNamespace-> numberOfPageRequests erişmek? Ben Zend oturum ad yeni bir örneğini yapmak zorunda mı?

2 Cevap

Eğer uygulama boyunca veya ad ad hoc, onun gerçekten size kalmış örneklerini oluşturmak olmadığını kullanımı ad tek bir örneğini oluşturmak ister.

Eğer Zend_Session_Namespace bir örneğini oluşturduğunuzda, gerçekten yapıyoruz hepsi bir 'ad' için $ _SESSION spesifik içine standart bir arayüz oluyor. Sueprglobal de 'namespace' $ _SESSION değerleri bir dizi için sadece bir birleşmeli anahtardır. Eğer namespace örneğini kullanarak herhangi verileri değiştirmek Yani, modifikasyonlar belirli bir ad işaret Zend_Session_Namespace tüm örnekleri mevcuttur.

Ben bu yüzden sadece Zend_Controller_Action genişletmek ve preDispatch yöntemi ben genel olarak kimlik doğrulama, yetkilendirme ve herhangi bir oturum oluşturma işlemek şeyi basit tutmayı tercih ediyor. Sonra ben sadece My_Controller_Action özellikleri olarak ayarlayarak tüm eylemleri ad alanları kullanılabilir hale.

Ben takip yaklaşım uygulama karşısında öylesine kendi mevcut önyükleyemez olarak ad ayarlamaktır. İstediğiniz herhangi bir denetleyici / eylem erişebilirsiniz.