Zend Framework - pass Variable auf jedem Controller
-
05-07-2019 - |
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
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.