Available Debug Data
$vals) {
if (!empty($vals['statusCode'])) {
$codes[] = $vals['statusCode'];
}
}
$codes = array_unique($codes, SORT_NUMERIC);
$statusCodes = !empty($codes) ? array_combine($codes, $codes) : null;
$hasDbPanel = isset($panels['db']);
echo GridView::widget([
'dataProvider' => $dataProvider,
'filterModel' => $searchModel,
'rowOptions' => function ($model) use ($searchModel, $hasDbPanel) {
if ($searchModel->isCodeCritical($model['statusCode'])) {
return ['class' => 'table-danger'];
}
return [];
},
'pager' => [
'linkContainerOptions' => [
'class' => 'page-item'
],
'linkOptions' => [
'class' => 'page-link'
],
'disabledListItemSubTagOptions' => [
'tag' => 'a',
'href' => 'javascript:;',
'tabindex' => '-1',
'class' => 'page-link'
]
],
'columns' => array_filter([
['class' => 'yii\grid\SerialColumn'],
[
'attribute' => 'tag',
'value' => function ($data) {
return Html::a($data['tag'], ['view', 'tag' => $data['tag']]);
},
'format' => 'html',
],
[
'attribute' => 'time',
'value' => function ($data) {
return '
' . Yii::$app->formatter->asDatetime($data['time'],
'yyyy-MM-dd HH:mm:ss') . '';
},
'format' => 'html',
],
[
'attribute' => 'processingTime',
'value' => function ($data) {
return isset($data['processingTime']) ? number_format($data['processingTime'] * 1000) .
' ms' : '
(not set)';
},
'format' => 'html',
],
[
'attribute' => 'peakMemory',
'value' => function ($data) {
return isset($data['peakMemory']) ? sprintf('%.3f MB', $data['peakMemory'] /
1048576) : '
(not set)';
},
'format' => 'html',
],
'ip',
$hasDbPanel ? [
'attribute' => 'sqlCount',
'label' => 'Query Count',
'value' => function ($data) {
/* @var $dbPanel \yii\debug\panels\DbPanel */
$dbPanel = $this->context->module->panels['db'];
$title = "Executed {$data['sqlCount']} database queries.";
$warning = '';
if ($dbPanel->isQueryCountCritical($data['sqlCount'])) {
$warning .= 'Too many queries. Allowed count is ' . $dbPanel->criticalQueryThreshold;
}
if (!empty($data['excessiveCallersCount'])) {
$warning .= ($warning ? '
' : '') . $data['excessiveCallersCount'] . ' '
. ($data['excessiveCallersCount'] == 1 ? 'caller is' : 'callers are')
. ' making too many calls.';
}
$content = $data['sqlCount'];
if ($warning) {
$content .= '
⚠';
}
return '
' . $content . '';
},
'format' => 'raw',
] : null,
[
'attribute' => 'mailCount',
'visible' => isset($this->context->module->panels['mail']),
],
[
'attribute' => 'method',
'filter' => [
'get' => 'GET',
'post' => 'POST',
'delete' => 'DELETE',
'put' => 'PUT',
'head' => 'HEAD',
'command' => 'COMMAND'
]
],
[
'attribute' => 'ajax',
'value' => function ($data) {
return $data['ajax'] ? 'Yes' : 'No';
},
'filter' => ['No', 'Yes'],
],
[
'attribute' => 'url',
'label' => 'URL/Command',
],
[
'attribute' => 'statusCode',
'value' => function ($data) {
$statusCode = $data['statusCode'];
$method = $data['method'];
if ($statusCode === null) {
$statusCode = 200;
}
if (($statusCode >= 200 && $statusCode < 300) || ($method == 'COMMAND' && $statusCode == 0)) {
$class = 'badge-success';
} elseif ($statusCode >= 300 && $statusCode < 400) {
$class = 'badge-info';
} else {
$class = 'badge-danger';
}
return "
$statusCode";
},
'format' => 'raw',
'filter' => $statusCodes,
'label' => 'Status code'
],
]),
]);
?>