Как сделать функцию дампа ветки для отображения развернутых данных?
4 ответа
Вы можете сделать это с помощью javascript (jQuery):
// Expand all dump levels of all sf-dumps on a page.
$("pre.sf-dump").each(function() {
$(this).find("a.sf-dump-toggle:gt(0)").each(function(i, a){
a.click();
});
})
Это моделирует пользователя, щелкающего по каждому переключателю дампа (исключая первый с gt(0)
) каждого sf-дампа на странице.
Редактировать: я добавил функцию each(), чтобы скрипт работал для любого количества sf-дампов, которые могут быть на странице. Благодаря @Xavi
Быстрый способ может быть добавить это в вашем CSS:
pre.sf-dump .sf-dump-compact {
display: block;
}
Стрелки больше не будут работать, хотя. Но вы можете скрыть их с помощью этого правила CSS, если вас не волнует переключение:
.sf-dump-toggle {
display: none;
}
Как только вы сбросили данные, вы должны нажать Ctrl + левый клик на корневом узле
Чтобы полностью свернуть дамп объектов, используйте этот фрагмент jQuery:
$(".sf-dump-expanded").removeClass("sf-dump-expanded").addClass("sf-dump-compact");
Вы можете создать свой собственный сервис дампера и заставить twig использовать его вместо того, который расширение twig-bridge использует по умолчанию.
Во-первых, создайте свой собственный класс обслуживания, расширив фактический:
namespace App\Services;
use Symfony\Component\VarDumper\Dumper\HtmlDumper;
class MyHtmlDumper extends HtmlDumper
{
public function __construct($output = null, string $charset = null, int $flags = 0) {
parent::__construct($output, $charset, $flags);
$this->setDisplayOptions(['maxDepth' => 3]);
}
}
Во-вторых, используйте его. Вservices.yaml
, добавить под services:
:
var_dumper.html_dumper: '@App\Services\MyHtmlDumper'
И это все!
Вы можете выбрать другое значение для maxDepth
, или измените другие параметры.
Установите параметры отображения var dumper:
VarDumper::setHandler(function ($var) {
$cloner = new VarCloner();
$dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper();
$dumper->setDisplayOptions(['maxDepth' => 3]);
$dumper->dump($cloner->cloneVar($var));
});
См. https://symfony.com/doc/current/components/var_dumper/advanced.html
Я не уверен, что вы показываете на своих фотографиях, но скажем, например, что это турфирма. Затем вы можете получить доступ с вашими сеттерами и геттерами и отобразить в dump
, Итак, в приведенном выше у вас есть изображение, показывающее объект Tour и сбрасывает его в Twig. Тур сущность, вероятно, имеет getTourId()
Тип метода.
Таким образом, чтобы показать в вашей ветке, вы можете сделать так:
{{ dump(tour.getTourId) }}
Когда вы видите несколько уровней, то это, вероятно, коллекция массивов. Тогда вам нужно будет получить, что подчиненный объект может вызывать его метод. Скажем, объект тура имеет коллекцию дат (объект даты), и, возможно, объект даты имеет getDate()
функция.
Итак, вы бы назвали так:
{{ dump(tour.getDate[0].getDate) }}
куда getDate[0]
является первым элементом в массиве Dates объекта Tour. Элемент является объектом, поэтому вы вызываете его метод getDate
,
Вот как все делается в Twig. Это все на основе объектов, и очень прост в использовании. Обычно дамп не используется. Вы не хотите использовать его в производственной среде, потому что пользователи могут видеть знаменитые 500
страница ошибки.