首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Zend Framework -将变量传递给每个控制器

Zend Framework -将变量传递给每个控制器
EN

Stack Overflow用户
提问于 2009-11-27 10:45:29
回答 3查看 2K关注 0票数 4

我正在开发Zend Framework中的多租户应用程序,它从子域名中获取tenantID (mod_rewrite -> index.php ->将其与数据库进行匹配)。

我的问题是-如何将此变量(租户id)设置为可用于每个控制器?

莱昂蒂

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2009-11-27 15:08:41

是的,Zend_Registry可以用于此目的。你可以做的另一件事是注册一个预派发控制器插件,它会在任何控制器收到tenantID之前将其作为请求参数添加:

代码语言:javascript
复制
class YourApp_Plugin_IdWriter extends Zend_Controller_Plugin_Abstract {
    public function preDispatch(Zend_Controller_Request_Abstract $request) {
        $request->setParam('tenantID', ...);
    }
}

你需要在你的application.ini中注册插件:

代码语言:javascript
复制
resources.frontController.plugins.access = "YourApp_Plugin_IdWriter"
票数 9
EN

Stack Overflow用户

发布于 2009-11-27 12:27:02

我认为Zend_Registry可能是个不错的选择。http://framework.zend.com/manual/en/zend.registry.html这是正确的方法吗?

莱昂蒂

票数 1
EN

Stack Overflow用户

发布于 2009-12-02 00:50:07

我认为仅仅设置一个变量的前端控制器插件开销太大了。

一种更简单的方法是创建您的基本操作控制器,并从它继承所有其他控制器。

代码语言:javascript
复制
class MyCompany_Controller_Action extends Zend_Controller_Action
{
    public function preDispatch()
    {
        parent::preDispatch();

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

你还有一个间接的好处,那就是你的所有控制器都是从这个基础上继承而来的,因此更容易添加应该从所有控制器中使用的通用逻辑。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1806538

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档