Отладочная панель для Yii 1.1 портированная из Yii 2.
Необходимо скопировать исходники в /protected/extensions и дополнить конфиг
своего проекта следующими настройками:
return array(
'preload' => array(
'debug',
),
'components' => array(
'debug' => array(
'class' => 'ext.yii2-debug.Yii2Debug',
),
'db' => array(
'enableProfiling' => true,
'enableParamLogging' => true,
),
),
);Для более тонкой настройки компонента доступны параметры:
enabled- включение/выключение дебаггера.allowedIPs- список ip и масок, которым разрешен доступ к панели. По умолчаниюarray('127.0.0.1', '::1').accessExpression- дополнительное условие доступа к панели.logPath- путь для записи логов. По умолчанию/runtime/debug.historySize- максимальное кол-во записанных логов. Более ранние логи будут удаляться.highlightCode- подсветка кода. Подсвечиваются sql-запросы и php-массивы данных. Также параметрhighlightCodeможно настраивать для каждой панели отдельно.moduleId- ID модуля для просмотра ранее сохраненных данных. По умолчаниюdebug.showConfig- показывать или нет страницу с конфигурацией приложения. По умолчаниюfalse.hiddenConfigOptions- список опций значения которых необходимо скрывать при выводе на страницу с конфигурацией приложения. По умолчанию скрываются свойстваusernameиpasswordкомпонентаdb.internalUrls- использование внутренних роутов для urlManagerpanels- список подключенных к отладчику панелей.
Каждую подключаемую к отладчику панель так-же можно конфигурировать. Например:
'debug' => array(
'class' => 'ext.yii2-debug.Yii2Debug',
'panels' => array(
'db' => array(
// Отключить подсветку SQL
'highlightCode' => false,
// Отключить подстановку параметров в SQL-запрос
'insertParamValues' => false,
),
),
),Для каждой панели доступен callback-параметр filterData. Он дает возможность
обработать массив данных перед сохранением этих данных в лог. Это может быть
полезно в том случае, когда в данных проходит какая-то секретная информация, и
ее нужно каким-то образом экранировать либо вообще изъять из массива.
Пример:
'debug' => array(
'class' => 'ext.yii2-debug.Yii2Debug',
'panels' => array(
'db' => array(
'filterData' => function($data){
// Обработка
return $data;
}
),
),
),Будьте осторожны с изменением структуры данных. Это может стать причиной ошибок при просмотре.
Необходимо разработать свой класс унаследовав его от Yii2DebugPanel, например:
class MyTestPanel extends Yii2DebugPanel
{
// Имя вашей панели, выводится в меню отладчика
public function getName()
{
return 'Name';
}
// Функция должна возвращать HTML для вывода в тулбар
// Данные доступны через свойство $this->data
public function getSummary()
{
return '';
}
// Функция должна вернуть HTML с детальной информацией
// Данные доступны через свойство $this->data
public function getDetail()
{
return '';
}
// Функция должна вернуть массив данных для сохранения в лог
public function save()
{
return array();
}
}И подключить его в конфиг:
'panels' => array(
'test' => array(
'class' => 'path.to.panel.MyTestPanel',
// ...
),
),С помощью метода Yii2Debug::dump() можно писать в лог переменные любого типа,
и просматривать их на странице "Logs".
Если в вашем проекте используется PHP < 5.4, то для записи http-кода в логи и вывода его на панель можно воспользоваться следующей настройкой:
'panels' => array(
'request' => array(
'filterData' => function($data){
if (empty($data['statusCode'])) {
if (isset($data['responseHeaders']['Location'])) {
$data['statusCode'] = 302;
} else {
$data['statusCode'] = 200;
}
}
return $data;
},
),
),Таким образом 302-й код определяется косвенно, исходя из наличия заголовка Location.
Коды 4xx и 5xx определяются расширением самостоятельно. В PHP 5.4 для определения
http-кода расширение использует встроенную функцию http_response_code().
