首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取当前控制器

获取当前控制器
EN

Stack Overflow用户
提问于 2010-12-03 20:16:20
回答 2查看 9K关注 0票数 4

在我想要到达当前控制器的函数中:

代码语言:javascript
复制
$front = Zend_Controller_Front::getInstance();

这只给出了一个处理程序,而不是当前的控制器。

我把代码从函数改成了控制器内部。我问了他们的来历,我从getInstance得到的处理程序和这个

代码语言:javascript
复制
var_dump(get_class($front), get_class($this));

我得到了:

代码语言:javascript
复制
string 'Zend_Controller_Front' (length=21)
string 'IndexController' (length=15)

我怎样才能联系到real启动的前端控制器?

我不能作为参数传递,因为这个函数被使用了万亿次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-12-03 20:43:35

代码语言:javascript
复制
Zend_Controller_Front::getInstance()->getRequest()->getControllerName();
票数 7
EN

Stack Overflow用户

发布于 2010-12-03 21:18:28

可通过以下方式实现:

代码语言:javascript
复制
$front = Zend_Controller_Front::getInstance()
$request = $front->getRequest();
$module = ucfirst($request->getModuleName());
$controller = ucfirst($request->getControllerName());

$instance = new $module . '_' . $controller . 'Controller';

在Action Helper中:

代码语言:javascript
复制
$instance = $this->getActionController();

但是,这可能意味着你的架构有问题。

您应该将所需的公共代码移动到操作助手、服务或模型中。

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

https://stackoverflow.com/questions/4345414

复制
相关文章

相似问题

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