Frage

Ich arbeite an Multi-Tenant-Anwendung in Zend Framework, das es ist tenantID aus dem Sub-Domain Name wird (mod_rewrite -> index.php -> passt es für die Datenbank).

Meine Frage ist - wie kann ich diese Variable (Mieter-ID) für jeden Regler zur Verfügung steht

Leonti

War es hilfreich?

Lösung

Ja, das kann Zend_Registry dafür verwendet werden. Eine andere Sache, die Sie tun können, ist die Registrierung eines Vor-Versand-Controller-Plugin, das die tenantID als Anforderungsparameter hinzufügen wird, bevor eine Steuerung empfängt es:

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

Sie müssen das Plugin in application.ini registrieren:

resources.frontController.plugins.access = "YourApp_Plugin_IdWriter"

Andere Tipps

ich denke, Zend_Registry könnte der Weg zu gehen. http://framework.zend.com/manual/en/zend.registry. html Ist dies der richtige Weg, es zu tun?

Leonti

Ich denke, dass ein Front-Controller-Plugin, das nur eine Variable setzt ist zu viel Aufwand.

Ein einfacher Weg, um Ihre Basis Aktion Controller erstellen und erbt alle anderen von ihm.

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

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

Sie haben einen anderen indirekten Vorteil, dass alle Controller von dieser Basis erbt ein, so ist es einfacher, gemeinsame Logik hinzufügen, die von allen genutzt werden sollte.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top