Включить модуль с библиотекой 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 ().