¿Cómo puedo obtener un nombre para mostrar de la ID de visualización y la ID de visualización?

10

Puedo cargar una vista $view = Views::getView('my_view_id');, pero ¿cómo uso ese objeto para cargar el display_title o decir una matriz que contiene información que incluye el nombre para mostrar?

Nota: Esto no debe confundirse con la carga del título de la pantalla que podría usarse al imprimir la vista, ya que hay un método para eso ( getTitle()).

Gotas web
fuente

Respuestas:

17

Después de leer los documentos ( https://api.drupal.org/api/drupal/core!modules!views!src!ViewExecutable.php/class/ViewExecutable/8 ), probé lo siguiente (que funcionó):

$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: uso la función de renderizado en un objeto TranslatableMarkup , esto es lo que devuelve la función pluginTitle. Podría ser posible utilizar otras funciones allí, como, por ejemplo, getUntranslatedString
NB2: no entendí el OP. :-) Comentó la parte defectuosa del código, que devuelve el título del complemento de visualización, y no el título de la pantalla según lo solicitado. NB3: no entendí el OP. ¡DE NUEVO! :-) Comentó la parte defectuosa del código, que devuelve el título de la pantalla, y no el nombre de la pantalla como se solicitó. En mi defensa, esa propiedad tiene la etiqueta 'Nombre para mostrar' y su nombre 'display_title' (como se mencionó en el OP).

Captura de pantalla del ejemplo de Vistas:

ingrese la descripción de la imagen aquí

Y un script de prueba que obtiene el título de la pantalla (con la salida):

ingrese la descripción de la imagen aquí

¡Salud!

Stefanos Petrakis
fuente
Maldición, me faltaba la última línea ... gracias por eso. Actualmente estoy obteniendo el título anotado para mi complemento de visualización personalizado, por lo que tal vez me falta alguna configuración en mi complemento de visualización.
Webdrips
Hola. Entonces, ¿qué obtienes exactamente? ¿Qué quieres decir con el título anotado? De la función pluginTitle, obtuve un objeto TranslatableMarkup, ¿obtienes algo más allí?
Stefanos Petrakis
Tengo un complemento de visualización de vistas personalizadas como se describe aquí: api.drupal.org/api/drupal/… . Está anotado con @ViewsDisplay, que incluye un título. Ese título es lo que estoy recuperando con la última línea.
Webdrips
Su propia implementación, creo. ¿Has implementado / anulado la función pluginTitle entonces?
Stefanos Petrakis
Correcto, es una implementación personalizada, pero no, no implementé / anulé pluginTitle ()
Webdrips
1

El siguiente código depende del módulo ctools_views.

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

Para obtener el título de visualización solo se requiere el siguiente código.

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