Zend Framework - 将变量传递给每个控制器
我正在 Zend Framework 中开发多租户应用程序,它从子域名获取它的tenantID(mod_rewrite -> index.php -> 将其与数据库进行匹配)。
我的问题是 - 如何设置此变量(租户 ID)以供每个控制器使用?
莱昂蒂
I'm working on multi-tenant application in Zend Framework which gets it's tenantID from the subdomain name (mod_rewrite -> index.php -> matches it against the database).
My question is - how do I set this variable (tenant id) to be available for every Controller?
Leonti
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
是的,Zend_Registry 可以用于此目的。您可以做的另一件事是注册一个预调度控制器插件,它将在任何控制器接收它之前将tenantID添加为请求参数:
您需要在application.ini中注册该插件:
Yes, Zend_Registry can be used for that. Another thing you can do is registering a pre-dispatch controller plugin, which will add the tenantID as a request parameter before any controller receives it:
You need to register the plugin in your application.ini:
我认为 Zend_Registry 可能是正确的选择。
http://framework.zend.com/manual/en/zend.registry。 html
这是正确的方法吗?
莱昂蒂
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
我认为仅设置变量的前端控制器插件开销太大。
一种更简单的方法是创建基本操作控制器并从中继承所有其他操作控制器。
您还有另一个间接的好处,即您的所有控制器都继承自这个基础控制器,因此可以更轻松地添加应该从所有控制器中使用的通用逻辑。
I think that a front controller plugin that just sets a variable is too much overhead.
A simpler way is to create your base action controller and inherits all others from it.
You have another indirect benefit that all your controllers inherits from this base one, so it's easier to add common logic that should be used from all.