Включить модуль с библиотекой ZendFramework

Я хотел бы настроить профилировщик для установки моей компании 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'

В папке "контроллеры" у меня есть IndexController.php с именем класса:

class Profiler_IndexController extends Zend_Controller_Action

Но если я пытаюсь перейти по URL "/profiler", я получаю ошибку контроллера не найдена. Есть мысли о том, что я делаю не так?

Если я изменю ошибки в моем контроллере ошибок, я вижу, что он явно пытается получить доступ к модулю по умолчанию.

2 ответа

Решение

Попробуйте добавить прямой маршрут к модулю, поместив в загрузчик следующее:

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);
}

Если я правильно понял, вы тоже хотите иметь контроллеры в библиотеке? Если это так, вы можете установить, что ZF ищет модуль CompanyProfiler, где все контроллеры находятся в библиотеке (или где-либо еще), используя setControllerDirectory ().

Другие вопросы по тегам