2016-12-30 5 views
1

Я использую функцию dumptwig.Как сделать функцию дампа веточки для отображения развернутых данных?

Но это показывает данные «сложенный», как здесь:

Twig Dump Folded

При нажатии на стрелку, я могу раскрыть данные, разворачивая его, как здесь:

Twig Dump Unfolded

Вопрос:

есть ли способ рассказать twig или dump для непосредственного отображения объектов, полностью развернутых.

Thansk!

+0

Вы хотите сказать, что не хотите, чтобы у вас есть возможность щелкнуть по нему? Полностью расширен, я имею в виду, и он не рухнет? –

+1

Не совсем. Я в порядке, когда он «складной». Но я планирую отображать сложные объекты с глубиной 5 или 6 уровней, с примерно 3 - 5 свойствами на уровень. Полностью расширить объект будет легко 10 или 20 кликов. И я хотел показать все данные сразу, вместо того, чтобы требовать, чтобы пользователь нажимал на все. Поэтому вопрос фокусируется на том, чтобы показать все это, «не требуя от пользователя щелчка», и это не о том, как «запретить пользователю щелкнуть». –

ответ

-1

Я не уверен, что вы показываете на своих фотографиях, но скажем, например, это туристическая организация. Затем вы можете получить доступ к вашим сеттерам и геттерам и отобразить их в dump. Итак, в приведенном выше примере вы видите изображение объекта Tour и сбрасываете его в Twig. Вероятно, у Tour Entity есть метод типа getTourId().

Так, чтобы показать в вашей веточке, вы можете сделать так:

{{ dump(tour.getTourId) }} 

Когда вы видите несколько уровней, то это, вероятно, коллекция массив. Тогда вам нужно будет получить суб Entity может вызвать его метод. Скажем, Tour Entity, имеет набор дат (объект даты), и, возможно, объект Date имеет функцию getDate().

Итак вы могли бы назвать так:

{{ dump(tour.getDate[0].getDate) }} 

Где getDate[0] это первый элемент в коллекции массива дат в объекте Tour. Элемент является объектом, поэтому вы называете его методом getDate.

Как это делается в Twig. Все это основано на объектах и ​​очень прост в использовании. Обычно сброс не используется. Вы не хотите использовать его в рабочей среде, потому что вы можете получить пользователей, видя известную страницу ошибок 500.

1

Вы можете сделать это с помощью 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

+1

Okey, спасибо за подсказку! Это работает только в том случае, если есть один дамп на страницу, но нет, если их несколько. Принимая ваш ответ в качестве базы, я модифицировал селектор, чтобы открыть «все стрелки», кроме тех, которые являются «первым уровнем» с '$ (« a.sf-dump-toggle ») .not (« pre.sf-dump > a.sf-dump-toggle ") .each ([...]' - Пожалуйста, включите это в свой ответ, чтобы выбрать его и повысить его. –

+0

Я скорректировал сценарий, немного отличающийся от вашей версии, но они оба хорошие, я думаю :) – Graftak

0

Установите параметры отображения на вар самосвала:

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

1

Быстрый способ может быть, чтобы добавить это в вашем CSS:

pre.sf-dump .sf-dump-compact { 
    display: block; 
} 

стрелки больше не работали. Но вы можете скрыть их с помощью этого правила css, если вы не заботитесь о переключении:

.sf-dump-toggle { 
    display: none; 
}