1

我想为我公司的 ZendFramework 和 Doctrine 安装设置一个分析器。现在我在底部有一个栏,在开发环境中显示时会显示一些基本的时间和查询计数(很像 Symfony 分析器栏)。我想做的是将所有这些信息以及更多信息存储在 SQLite 数据库中,并允许在 Symfony 允许的分析器中查看这些信息。

有没有一种方法可以让我在我公司的库中包含一个模块,该分析器的所有代码都可以放在其中?理想情况下,我希望它进行设置,以便开发人员可以输入“domainname.com/CompanyProfiler”,它会向他们显示全屏分析器。我目前似乎没有办法在没有新模块的情况下使路由成为可能。

编辑:在看到关于 setControllerDirectory 的答案后,我查看了前端控制器方法并找到了 addModuleDirectory,这听起来正是我所需要的。但我无法让它工作。

$frontController->addModuleDirectory(APPLICATION_PATH . '/../library/Company/modules');

如果我在那之后做一个 getControllerDirectory ,我会看到:

'profiler' => '{really long correct path}../library/Company/modules\profiler\controllers'

在“controllers”文件夹中,我有 IndexController.php 的类名:

class Profiler_IndexController extends Zend_Controller_Action

但是如果我尝试访问 URL“/profiler”,我会收到一个找不到控制器的错误。对我做错了什么有任何想法吗?

如果我 var_dump 错误控制器中的错误,我可以看到它显然正在尝试访问默认模块。

4

2 回答 2

1

如果我理解正确,您还希望在库中拥有控制器吗?如果是这样,您可以设置 ZF 使用setControllerDirectory()查找所有控制器都在库(或其他任何地方)中的 CompanyProfiler 模块。

于 2012-07-27T18:01:57.713 回答
0

尝试通过在引导程序中放置以下内容来添加到模块的直接路由:

protected function _initRoutes()
{
    $router = Zend_Controller_Front::getInstance()->getRouter();

    // Route for profiler
    $route = new Zend_Controller_Router_Route(
        'profiler/:controller/:action/*',
        array(
            'module'     => 'profiler',
            'controller' => 'index',
            'action'     => 'index'
        )
    );
    $router->addRoute('profiler', $route);
}
于 2012-07-30T14:13:44.320 回答