我已经看了很多关于Devel模块中的kint()如何难以使用的讨论,因为它最大化了PHP的内存限制并导致浏览器拖拽。我听说过一些有关通过限制级别数来提高其速度的想法。例如,在settings.php中,您可以执行以下操作:
require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;
还有其他方法可以提高kint()的速度吗?
我已经看了很多关于Devel模块中的kint()如何难以使用的讨论,因为它最大化了PHP的内存限制并导致浏览器拖拽。我听说过一些有关通过限制级别数来提高其速度的想法。例如,在settings.php中,您可以执行以下操作:
require_once DRUPAL_ROOT . '/modules/contrib/devel/kint/kint/Kint.class.php';
Kint::$maxLevels = 3;
还有其他方法可以提高kint()的速度吗?
Answers:
除了问题中提到的settings.php方法外,其他用户还提到了两种其他方法来设置最大输出级别,还有以下其他一些想法:
创建一个/modules/contrib/devel/kint/kint/config.php
文件并添加/修改行$_kintSettings['maxLevels'] = 3;
(通过Slack上的@mdrummond)
在预处理功能中,添加以下内容:(通过Slack上的@thpoul)
kint_require();
Kint::$maxLevels = 3;
确保不要单击+
显示整棵树的标志。单击该块。您可以单击向右箭头在新窗口中打开输出,以便于查看(例如,当输出位于块中时)。(由@cwightrun在Slack上发布)
代替使用kint(),创建预处理函数并使用调试器来探索变量。(由@danny_englander在Slack上发布)
给kint()传递一个特定的变量,而不是使其遍历整个树(通过下面的@No Sssweat)。
如果您只需要知道存在哪些变量,则可以通过{% for key, value in _context %}
循环查看键(通过下面的@mortendk)
kint_require(); Kint::$maxLevels = 3;
预处理函数中的GOLD。谢谢!允许您根据需要设置任意级别。现在只用它来转储2个级别的东西,然后立即转储5个级别的另一个对象。
Kint不是唯一可用于调试变量和树枝模板的库。
我建议使用Symfony var-dumper,IMHO是调试变量最强大的库之一。Symfony var-dumper与最新版本的devel模块集成在一起(请参阅devel问题队列中的此问题。添加基本的symfony var-dumper集成)
配合var-dumper与devel一起使用
composer require symfony/var-dumper
)安装var-dumper{{ devel_dump() }}
或{{ kpr() }}
或{{ dpm() }}
代替{{编制品()}}在树枝模板调试变量无法获取HTML视图或加载kint输出太慢时。
我将序列化变量并保存为
\Drupal::logger('custom debug')->notice($string);
然后,我将其复制到unserialize.com并选择Krumo display ....
添加$GLOBALS['_kint_settings']['maxLevels'] = 4;
您的settings.local.php应该可以解决问题。在这里随意更改级别数。
$GLOBALS['_kint_settings']['maxLevels']
在settings.local.php中,/ modules/contrib/devel/kint/kint/config.php中的默认值覆盖了该值。