あなた自身のパネルを作る
========================
ツール・バーとデバッガは、ともに、高い構成可能性とカスタマイズ性を持っています。これらをカスタマイズするために、あなた自身のパネルを作成して、あなたが必要とする特定のデータを収集して表示することが出来ます。
以下において、簡単なカスタム・パネルを作るプロセスを説明します。そのパネルは以下の機能を持つものとします。
- リクエストの間にレンダリングされたビューを収集する
- ツールバーにレンダリングされたビューの数を表示する
- デバッガでビューの名前を確認することが出来る
なお、あなたがベーシック・プロジェクト・テンプレートを使用しているものと仮定しています。
最初に、`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) {
// configuration adjustments for 'dev' environment
$config['bootstrap'][] = 'debug';
$config['modules']['debug'] = [
'class' => 'yii\debug\Module',
'panels' => [
'views' => ['class' => 'app\panels\ViewsPanel'],
],
];
// ...
```
以上です。これで、たいしてコードを書くこともなく、もう一つの便利なパネルを手に入れました。