web-dev-qa-db-fra.com

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

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 comprenant 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()).

9
Webdrips

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'];

N.B.1: J'utilise la fonction de rendu sur un objet TranslatableMarkup , c'est ce que renvoie la fonction pluginTitle. Il pourrait être possible d'y utiliser d'autres fonctions, comme par exemple getUntranslatedString
N.B.2: 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é. N.B.3: 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:

enter image description here

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

enter image description here

À votre santé!

16

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();
1
NewZeal