yiisoft/yii2-debug
Yii2 Debug adds a bottom toolbar and dedicated pages to inspect requests, logs, DB queries, profiling, and more during development. Install via Composer and enable the debug module in your app config to quickly diagnose issues.
ツール・バーとデバッガは、ともに、高い構成可能性とカスタマイズ性を持っています。これらをカスタマイズするために、あなた自身のパネルを作成して、あなたが必要とする特定のデータを収集して表示することが出来ます。 以下において、簡単なカスタム・パネルを作るプロセスを説明します。そのパネルは以下の機能を持つものとします。
なお、あなたがベーシック・プロジェクト・テンプレートを使用しているものと仮定しています。
最初に、panels/ViewsPanel.php で Panel クラスを実装する必要があります。
<?php
namespace app\panels;
use yii\base\Event;
use yii\base\View;
use yii\base\ViewEvent;
use yii\debug\Panel;
class ViewsPanel extends Panel
{
private $_viewFiles = [];
public function init()
{
parent::init();
Event::on(View::className(), View::EVENT_BEFORE_RENDER, function (ViewEvent $event) {
$this->_viewFiles[] = $event->sender->getViewFile();
});
}
/**
* {[@inheritdoc](https://github.com/inheritdoc)}
*/
public function getName()
{
return 'Views';
}
/**
* {[@inheritdoc](https://github.com/inheritdoc)}
*/
public function getSummary()
{
$url = $this->getUrl();
$count = count($this->data);
return "<div class=\"yii-debug-toolbar__block\"><a href=\"$url\">Views <span class=\"yii-debug-toolbar__label yii-debug-toolbar__label_info\">$count</span></a></div>";
}
/**
* {[@inheritdoc](https://github.com/inheritdoc)}
*/
public function getDetail()
{
return '<ol><li>' . implode('<li>', $this->data) . '</ol>';
}
/**
* {[@inheritdoc](https://github.com/inheritdoc)}
*/
public function save()
{
return $this->_viewFiles;
}
}
上記のコードのワークフローは以下のとおりです。
init が実行されます。 コントローラのアクションが実行される間にデータを収集するハンドラをアタッチするには、このメソッドが最適の場所です。save が呼ばれます。このメソッドによって返されたデータは、データ・ファイルに保存されます。
このメソッドが何も返さなかった場合には、パネルは表示されません。$this->data にロードされます。ツールバーの場合は、これは常に最新のデータを表します。デバッガの場合は、このプロパティを以前のどのデータ・ファイルからでも読み出すことが出来ます。getSummary から取得します。
そこではレンダリングされたビューの数を表示します。デバッガは同じ目的のために getDetail を使用します。さあ、それでは、デバッガに新しいパネルを使うように教えましょう。config/web.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'],
],
];
// ...
以上です。これで、たいしてコードを書くこともなく、もう一つの便利なパネルを手に入れました。
デフォルトでは、ツールバーのサマリーをクリックすると、インライン・プレビューが表示されます。この動作をオーバーライドするためには、getSummary() において、ルートの <div> にyii-debug-toolbar__block_ignore_click クラスを追加して下さい。
クライアントサイドでツールバーにプログラム的にアクセスする必要がある場合、例えば JavaScript のイベントをバインドしたい場合は、document で yii.debug.toolbar_attached イベントを理寸して下さい。例えば、
document.addEventListener('yii.debug.toolbar_attached', function(event) {
var toolbar = event.target;
}
How can I help you explore Laravel packages today?