Zend Framework - her denetleyicisine değişken geçmek

3 Cevap php

Ben alt alan adı (-> index.php -> veritabanı karşı maçlar mod_rewrite) adlı bu tenantID bulunuyor alır Zend Framework multi-kiracı uygulama üzerinde çalışıyorum.

Benim soru - nasıl ben bu değişken (kiracı id) her Denetleyicisi için kullanılabilir olması için ayarlarım?

Leonti

3 Cevap

Evet Zend_Registry bunun için de kullanılabilir. Yapabileceğiniz başka bir şey, herhangi bir kontrolör, bunu almadan önce bir istek parametre olarak tenantID katacak olan bir ön-gönderme kontrolör eklentisi kaydediyor:

class YourApp_Plugin_IdWriter extends Zend_Controller_Plugin_Abstract {
    public function preDispatch(Zend_Controller_Request_Abstract $request) {
        $request->setParam('tenantID', ...);
    }
}

Sen application.ini içinde eklenti kayıt gerekir:

resources.frontController.plugins.access = "YourApp_Plugin_IdWriter"

I think Zend_Registry might be the way to go. http://framework.zend.com/manual/en/zend.registry.html Is this is the right way to do it?

Leonti

Ben sadece bir değişken ayarlar bir ön denetleyicisi eklenti çok fazla havai olduğunu düşünüyorum.

Basit bir yolu baz eylem denetleyicisi oluşturmak için ve ondan diğerlerini devralır.

class MyCompany_Controller_Action extends Zend_Controller_Action
{
    public function preDispatch()
    {
        parent::preDispatch();

        $this->getRequest()->setParam('tenantId', 42);
    }
}

Tüm kontrolörler bu temel bir devraldığı dolaylı bir fayda var, bu yüzden tüm kullanılmalıdır ortak mantığı eklemek kolay.