Интеграция VarDumper с Друпалом

18.01.2021
Drupal 8
Code templates

Если по каким либо причинам нет желания устанавливать модуль Devel, но требуется корректно выводить переменные, то можно воспользоваться данной функцией. Эта функция вывода переменную использует Symfony/VarDumper и Drupal\Core\Messenger

Необходимо в файле settings.php или local.settings.php добавить код ниже.

use Drupal\filter\Render\FilteredMarkup;
use Symfony\Component\VarDumper\Cloner\VarCloner;
use Symfony\Component\VarDumper\Dumper\CliDumper;
use Symfony\Component\VarDumper\Dumper\HtmlDumper;
use Symfony\Component\VarDumper\VarDumper;

// Set handler for VarDumper.
VarDumper::setHandler(function ($var) {
  $cloner = new VarCloner();
  $dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper();
  $output = fopen('php://memory', 'r+b');
  $dumper->dump($cloner->cloneVar($var), $output);
  $output = stream_get_contents($output, -1, 0);
  $output = (string) $output;
  $output = FilteredMarkup::create($output);
  \Drupal::messenger()->addMessage($output);
});