2016-12-30 3 views
1

J'utilise la fonction dump du twig.Comment puis-je faire la fonction de vidage de twig pour afficher les données dépliées?

Mais il montre les données « plié », comme ici:

Twig Dump Folded

Lorsque je clique sur la flèche, je peux révéler les données en déplier, comme ici:

Twig Dump Unfolded

question:

Est-il possible de dire au twig ou dump pour afficher directement les objets entièrement dépliés.

Thansk!

+0

Vous voulez dire que vous ne voulez pas pouvoir cliquer dessus? Entièrement élargi je veux dire, et il ne s'effondre pas? –

+1

Pas vraiment. Je suis d'accord avec le fait qu'il soit "pliable". Mais je prévois d'afficher des objets complexes d'environ 5 ou 6 niveaux de profondeur, avec environ 3 à 5 propriétés par niveau. Entièrement élargir l'objet serait facilement 10 ou 20 clics. Et je voulais montrer toutes les données à la fois, au lieu d'obliger l'utilisateur à cliquer sur tout. Ainsi, la question se concentre sur le fait de montrer tout "sans que l'utilisateur ait à cliquer" et il ne s'agit pas de savoir comment "empêcher l'utilisateur de cliquer". –

Répondre

-1

Je ne suis pas sûr de ce que vous montrez dans vos images, mais disons par exemple qu'il s'agit d'une entité de tournée. Ensuite, vous pouvez accéder avec vos setters et getters et afficher dans dump. Donc, dans ce qui précède, vous avez une image montrant l'objet Tour et le déversant dans Twig. L'entité Tour a probablement une méthode de type getTourId().

Donc, pour montrer dans votre branche, vous pouvez faire comme ceci:

{{ dump(tour.getTourId) }} 

Lorsque vous voyez plusieurs niveaux, alors il est probablement une collection de tableau. Ensuite, vous devrez obtenir le sous entité peut appeler sa méthode. Supposons qu'une Entité de tournée possède une collection de dates (Entité de date) et que l'entité Date ait une fonction getDate().

Alors vous appelez comme ceci:

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

getDate[0] est le premier élément de la collection de tableau des dates de l'objet Tour. L'élément est un objet, vous l'appelez donc la méthode getDate.

Voici comment les choses sont faites dans Twig. Tout est basé sur un objet, et très facile à utiliser. Normalement, le vidage n'est pas utilisé. Vous ne souhaitez pas l'utiliser dans un environnement de production, car les utilisateurs peuvent voir la fameuse page d'erreur 500.

1

Vous pouvez le faire avec 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(); 
     }); 
    }) 

Simule l'utilisateur en cliquant sur chaque bascule de vidage (à l'exception du premier avec gt(0)) de chaque sf-décharge sur une page. Editer: J'ai ajouté une fonction each() pour que le script fonctionne pour n'importe quel nombre de déchargements-sf sur une page.Merci à @Xavi

+1

Okey, merci pour le pourboire! Cela ne fonctionne que s'il y a un vidage par page, mais pas s'il y en a plusieurs. En prenant votre réponse comme base, j'ai modifié le sélecteur pour ouvrir "toutes les flèches" à l'exception de celles qui sont "le premier niveau" avec '$ (" a.sf-dump-toggle ") .not (" pre.sf-dump > a.sf-dump-toggle ") .each ([...]' - Veuillez l'incorporer à votre réponse afin de la sélectionner et de la mettre à jour –

+0

J'ai ajusté le script, un peu différent de votre version mais ils sont à la fois bon je pense :) – Graftak

0

Définissez les options d'affichage du dumper var:

VarDumper::setHandler(function ($var) { 
    $cloner = new VarCloner(); 
    $dumper = 'cli' === PHP_SAPI ? new CliDumper() : new HtmlDumper(); 
    $dumper->setDisplayOptions(['maxDepth' => 3]);  

    $dumper->dump($cloner->cloneVar($var)); 
}); 

Affichez https://symfony.com/doc/current/components/var_dumper/advanced.html

1

Un moyen rapide pourrait être d'ajouter dans votre css:

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

Le Les flèches ne fonctionneraient plus. Mais vous pouvez les cacher avec cette règle css si vous ne vous souciez pas de basculer:

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