web-dev-qa-db-fra.com

Obtenez les valeurs des champs de vues dans un modèle Twig

J'ai créé une vue qui génère 3 champs pour chaque ligne. En utilisant simplement des vues, je peux obtenir la sortie pour ressembler à ceci:

<li>[Field1 Value] [field2 value] [field3 value]</li>

J'ai une obligation de définir un attribut de données sur les éléments de la liste sur l'une des valeurs de champ. En outre, je veux encapsuler une ancre reliant à la vue détaillée du contenu autour des trois valeurs de champ.

J'ai essayé d'utiliser un modèle twig comme views-view-fields.html.twig (trop générique je sais, mais à des fins de test) mais les valeurs ne semblent pas être là. Je peux le faire {{dump (fields | keys)}} et j'y vois mes champs, mais si je le fais {{dump (fields.my_field | keys)}} alors ce n'est qu'un tableau vide.

J'ai également essayé d'utiliser un modèle comme la page - [nom de ma page créée par des vues] .html.twig mais je n'arrivais pas à trouver les valeurs de ces champs là non plus.

Toute aide sur les conseils sur l'endroit où je devrais chercher, en particulier quels twig modèles que je pourrais créer/remplacer et comment obtenir les valeurs serait très appréciée!

6
andyxmas

Dans le fichier modèle (vues-vue-champ), vous pouvez utiliser

<li> {{ row._entity.field_name1.value }} {{ row._entity.field_name2.value }} {{ row._entity.field_name3.value }}</li>

Ou, dans votre thème, dans la fonction de prétraitement, vous pouvez remplacer la sortie:

function your_theme_name_preprocess_views_view_field(&$variables) {
    $view = $variables['view'];
    if ($view->storage->id() == 'your_view_name') {
        $variables['output'] = '<li>' . 
          $variables['row']->_entity->field_name1->value . 
          $variables['row']->_entity->field_name2->value . 
          $variables['row']->_entity->field_name3->value . 
        '</li>';
    }
}
3
Oana Hulpoi

En fait, vous pouvez utiliser les modèles de vues comme ils l'étaient dans Drupal 7. Bien qu'il n'y ait pas d'informations sur le thème dans la partie avancée des paramètres de vues, vous pouvez prendre des modèles de base dans le dossier des modèles du module des vues principales. Pour créer un modèle de vues pour chaque nom de ligne, il views-view-fields - VIEW-NAME.html.twig where VIEW-NAME est un nom de machine de votre vue ou views-view-fields - VIEW-NAME - DISPLAY-NAME.html.twig où DISPLAY-NAME est un affichage que vous utilisez (bloc, page, etc.). Ajoutez-les dans votre dossier de thèmes de modèles.

Utilisez template_preprocess_views_view_fields (& $ variables) function pour prétraiter chaque ligne.

Dans votre modèle, les champs sont disponibles de cette façon {{fields.field_name.content}}

1
Andrew Nim

$ Row obtiendra-t-il ce dont vous avez besoin au lieu de l'entité de champ traitée?

{{kint (row.node_field_data_created)}}

0
Todd Bloom