创建自己的面板
========================
工具栏和调试器都具有高度可配置性和可定制性。这样做,您可以创建您自己的面板,
收集并显示您想要的具体数据。下面我们将介绍创建一个简单的自定义面板的过程:
- 收集请求时渲染的视图;
- 在工具栏中显示视图的数量;
- 允许您在调试器中查看视图名称。
假设您使用了基本的项目模板。
首先我们需要在 `panels/ViewsPanel.php` 中实现 `Panel` 类:
```php
_viewFiles[] = $event->sender->getViewFile();
});
}
/**
* {@inheritdoc}
*/
public function getName()
{
return 'Views';
}
/**
* {@inheritdoc}
*/
public function getSummary()
{
$url = $this->getUrl();
$count = count($this->data);
return "
";
}
/**
* {@inheritdoc}
*/
public function getDetail()
{
return '- ' . implode('
- ', $this->data) . '
';
}
/**
* {@inheritdoc}
*/
public function save()
{
return $this->_viewFiles;
}
}
```
以上代码的工作流程是:
1. 在任何控制器动作运行之前执行 `init`。此方法是在控制器动作执行过程中从最佳位置收集数据。
2. 执行控制器动作之后调用 `save`。此方法返回的数据将存储在数据文件中。如果这个方法没有返回,面板
将不会被渲染。
3. 数据文件中的数据被加载到 `$this->data`。对于工具栏来说,代表最新的数据。对于调试器来说,此属性可以被设置为
从任何以前的数据文件中读取。
4. 工具栏从 `getSummary` 获取其内容。在这里,我们展示的渲染视图文件的数量。
调试器使用 `getDetail` 达到同样的目的。
现在是时候告诉调试器来使用新的面板了。在 `config/web.php` 中,调试配置信息更改为:
```php
if (YII_ENV_DEV) {
// 配置调整为“开发”环境
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
'panels' => [
'views' => ['class' => 'app\panels\ViewsPanel'],
],
];
// ...
```
好了。现在我们没有写太多代码就拥有了另一个有用的面板了。