Náš cíl je jednoduchý, pro vývoj se často hodí vidět dostupné metody nějakého objektu. Pro Drupal 8 to bylo snadné, to vše ukazoval modul Devel a submodul Kint. Nová verze kompatibilní s Drupal 9 už submodul Kint odstranila, viz. "Remove Kint module and create a kint dumper plugin in devel" https://www.drupal.org/project/devel/issues/2839515
V Release notes verze 4.0.0 https://www.drupal.org/project/devel/releases/4.0.0 se dočteme, že je třeba spustit composer require kint-php/kint, abychom dostali kint zpátky, ale je funguje jen napůl, jelikož takto kint nám kint nevrací dostupné metody – funguje jako klasický dump.
Naštěstí tohle vše řeší modul nový modul Devel Kint Extras https://www.drupal.org/project/devel_kint_extras.
Instalace a konfigurace
Takže si nainstalujeme oba dva moduly Devel I Devel Kint Extras, ideálně přes composer. Druhý jmenovaný automaticky stáhne i potřebný projekt kint-php.
V tomto okamžiku jsem narazil na problém, že jsem měl předtím development verzi 4.x-dev modulu Devel, a po změně na 4.0.0 jsem v souboru devel.info.yml neměl vypsanou verzi modulu, kterou potřebuje Devel Kint Extras. Stačilo adresář web/modules/contrib/devel smazat, a znovu nahrát přes composer.
V nastavení "Devel settings" /admin/config/development/devel si už jen přepneme Dumper na "Kint extended" a je hotovo.
Pokud chceme vypsat například entitu uživatele, použijeme ksm($account); a dostaneme
Pozor: musíme použít ksm() or dpm(), a ne kint().
Pro Kint existuje trik, jak omezit hloubku výpisů, aby nám nedošla pamět. Do souboru web/sites/default/settings.php (nebo settings.local.php ...) dáme následující řádky:
// Change kint max_depth setting.
https://gist.github.com/JPustkuchen/a5f1eaeb7058856b7ef087b028ffdfeb#gi…
if (class_exists('Kint')) {
// Set the max_depth to prevent out-of-memory.
\Kint::$max_depth = 4;
}
Závěr
Díky modulu Devel Kint Extras si do Drupalu 9 snadno vrátíme zpět to, na co jsme byli zvyklí z předchozí verze modulu Devel a Kint pro Drupal 8.