モジュールとtwigテンプレート)でDevelのデバッグ関数kint()
とdpm()
を実際に使用するのに問題があります。これらは、プリミティブ変数、フラット配列などですが、EntityRerefenceFieldItemList
などのオブジェクトを調べようとすると、サイトがクラッシュするか(ホワイトページ)、大量のデータが生成され、リストを展開するスクリプトが機能しなくなります。
これらの問題を回避するにはどうすればよいですか?
エンティティとフィールドを操作する場合、オブジェクトではなくvaluesを表示する必要があります。
エンティティの場合は$entity->toArray()
を使用し、フィールドオブジェクトの場合は$field->getValue()
を使用します。これをほぼ1:1に変換して、オブジェクトのこれらの値にアクセスできます。 $ entity-> field_name-> property。
エンティティ参照フィールドの-> entityなどの計算されたプロパティなど、いくつかは表示されていません。全体的な概要については https://wizzlern.nl/drupal/drupal-8-entity-cheat-sheet を参照してください。
とは言っても、デバッグ関数よりもIDE + xdebugを強くお勧めします。これを使用するだけで、時には単純なdebug()を使用します。これは、上記の方法。
最初の問題は、Kintが深くなる配列/オブジェクトの最大レベルを変更することで一時的に修正できます。現在、これはまだモジュール内のコードの1行を変更することによって行う必要があります。既に問題があります https://www.drupal.org/node/2405179 これを構成可能な設定にすること。
devel/kint/kint/config.default.php
で、7
を問題のない任意の数に変更します。通常は4
に設定します。
/** @var int max array/object levels to go deep, if zero no limits are applied */
$_kintSettings['maxLevels'] = 7;
この番号は、Develモジュールを更新するとすぐにリセットされることに注意してください。
Develモジュールは優れたツールですが、すべての状況で機能するわけではありません。実際には、デバッグ用のモジュールtwigとして知られています Twig XDebug (まだ実装されていません)。
または
IDEでxdebugerを手動でインストールします。
無料で利用できるIDE:
ネットビーンズ
日食
Aptana Studio(Eclipse派生)
有料IDE:
phpDesigner
Jetbrains PHPStorm
コモドIDE(いくつかの無料/柔軟な価格設定シナリオがあります)。
IDEを選択した後の次のステップ
Xdebugをインストールする
Php.ini設定を変更してxdebugを有効にします
IDEをインストールし、xdebugとブラウザーを使用するように構成します。
おそらく、xdebugのブラウザープラグイン。例- ChromeのXdebugヘルパー
マウスのクリックには注意してください。クリックしないでください。 + アイコン!これにより、すべてのレベルが拡張され、時間がかかる場合があります。タイトルバーをクリックすると、最上位のみが展開されます。