Develモジュールのkint()は、PHPメモリー制限を使い果たし、ブラウザーをドラッグさせるため)で操作するのがいかに難しいかについて、かなりの議論を見てきました。いくつか聞いたことがあるレベルの数を制限することで速度を向上させることについての考えたとえば、settings.phpでは、次のことができます。
require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;
Kint()の速度を向上させる他の方法はありますか?
質問で言及されたsettings.phpメソッドに加えて、他のユーザーが最大出力レベルを設定するために言及した他の2つの方法に加えて、いくつかの他のアイデアがあります:
/modules/contrib/devel/kint/kint/config.php
ファイルを作成し、$_kintSettings['maxLevels'] = 3;
という行を追加/変更します(Slackの@mdrummondによる)
前処理関数で、以下を追加します:(Slackの@thpoulによる)
kint_require();
Kint::$maxLevels = 3;
ツリー全体を表示する+
記号は絶対にクリックしないでください。代わりにブロックをクリックしてください。右矢印をクリックして新しいウィンドウで出力を開くと、表示が見やすくなります(出力がブロック内にある場合など)。 (Slackの@cwightrunによる)
Kint()を使用する代わりに、前処理関数を作成し、デバッガーを使用して変数を調べます。 (Slackの@danny_englanderによる)
ツリー全体を回転させるのではなく、kint()に特定の変数を渡します( 下の@No Sssweatによって )。
存在する変数を知る必要があるだけの場合は、{% for key, value in _context %}
ループを実行するだけでキーを表示できます( 以下@mortendkによって )
Kintは、変数およびtwigテンプレートをデバッグするために使用できる唯一のライブラリではありません。
私は Symfony var-dumper を使用することをお勧めします。IMHOは変数をデバッグするための最も強力なライブラリの1つです。 symfony var-dumperはdevelモジュールの最新バージョンと統合されています(この問題をdevel issueキューで確認してください symfonyの基本的なvar-dumper統合を追加してください )
Develでvar-dumperを使用する場合
composer require symfony/var-dumper
_)を介してvar-dumperをインストールします{{ devel_dump() }}
または{{ kpr() }}
または{{ dpm() }}
を使用しますここに別のヒントがあります:
すべてを返す{{ kint() }}
を使用する代わりに、必要な変数を渡すことでより具体的にすることができます。したがって、読み込みが速くなります。
例:node-[type] .html.twigでは、コンテンツ変数をkintに渡すことができます。
{{ kint(content) }}
フィールドの名前がわかっている場合は、さらに具体的にすることができます。
{{ kint(content.field_name['#items'].getValue()) }}
これは、フィールド名の値のみを返します。
キントを使用する代わりに、この小さなトリックを実行して、そこに何があるかを知ることができます
node.html.twig
<ol>
{% for key, value in _context %}
<li>{{ key }} </li>
{% if loop.index == 2 %}}
<pre>{{ dump( value ) }}</pre>
{% endif %}
{% endfor %}
</ol>
はい、それはkintがあなたに見せたいと思うすべての愛を与えませんが、少なくともあなたは名前などを手に入れます
参考までに、Devel v3では、@ chrisshattuckによって提案された最上位の方法を使用する場合、2つの更新を行う必要があります。
admin/config/development/devel?q=/admin/config/development/devel
に移動settings.local.php
に移動して、max_depth変数を更新します。 include_once(DRUPAL_ROOT . './../vendor/kint-php/kint/src/Kint.php');
if (class_exists('Kint')) {
Kint::$max_depth = 4;
}
HTMLビューを取得できない場合、またはkint出力の読み込みが遅すぎる場合。
変数をシリアル化して保存します
\Drupal::logger('custom debug')->notice($string);
次に、それを nserialize.com にコピーし、Krumoディスプレイを選択します...