Comment puis-je obtenir un nom d'affichage à partir de l'ID d'affichage et de l'ID d'affichage?

10

Je peux charger une vue avec $view = Views::getView('my_view_id');, mais comment utiliser cet objet pour charger le display_title ou dire un tableau contenant des informations incluant le nom d'affichage?

Remarque: Cela ne doit pas être confondu avec le chargement du titre de l'affichage qui pourrait être utilisé lors de l'impression de la vue, car il existe une méthode pour cela ( getTitle()).

Webdrips
la source

Réponses:

17

Après avoir lu les documents ( https://api.drupal.org/api/drupal/core!modules!views!src!ViewExecutable.php/class/ViewExecutable/8 ), j'ai essayé ce qui suit (qui a fonctionné):

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayObj = $view->getDisplay();
//$displayPluginTitle = $displayObj->pluginTitle()->render();
//$displayTitle = $displayObj->getOption('title');
$displayName = $displayObj->display['display_title'];

NB1: J'utilise la fonction de rendu sur un objet TranslatableMarkup , c'est ce que renvoie la fonction pluginTitle. Il pourrait être possible d'utiliser d'autres fonctions là-bas, comme par exemple getUntranslatedString
NB2: j'ai mal compris l'OP. :-) A commenté la partie défectueuse du code, qui renvoie le titre du plugin d'affichage, et non le titre de l'affichage comme demandé. NB3: J'ai mal compris l'OP. ENCORE! :-) A commenté la partie défectueuse du code, qui renvoie le titre de l'affichage, et non le nom de l'affichage comme demandé. Pour ma défense, cette propriété est étiquetée 'Nom d'affichage' et son nom 'display_title' (comme cela a été mentionné dans l'OP).

Capture d'écran de l'exemple Vues:

entrez la description de l'image ici

Et un script de test qui obtient le titre de l'affichage (avec la sortie):

entrez la description de l'image ici

À votre santé!

Stefanos Petrakis
la source
Bon sang, il me manquait la dernière ligne ... merci pour ça. Je reçois actuellement le titre annoté de mon plug-in d'affichage personnalisé, donc peut-être qu'il me manque un paramètre dans mon plug-in d'affichage.
Webdrips du
Héy. Alors, qu'obtenez-vous exactement? Que voulez-vous dire par le titre annoté? De la fonction pluginTitle, j'ai obtenu un objet TranslatableMarkup, obtenez-vous autre chose là-bas?
Stefanos Petrakis
J'ai un plugin d'affichage de vues personnalisées comme décrit ici: api.drupal.org/api/drupal/… . Il est annoté avec @ViewsDisplay, qui comprend un titre. Ce titre est ce que je récupère avec la dernière ligne.
Webdrips
Votre propre implémentation, je pense. Avez-vous alors implémenté / remplacé la fonction pluginTitle?
Stefanos Petrakis
Corrigez c'est une implémentation personnalisée, mais non, je n'ai pas implémenté / remplacé pluginTitle ()
Webdrips
1

Le code suivant dépend du module ctools_views.

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayObj = $view->getDisplay();
$displayName = $displayObj->display['display_title'];

Pour obtenir le titre d'affichage, vous n'avez besoin que du code suivant.

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayName = $view->getTitle();
NewZeal
la source