Como posso obter um nome para exibição no ID da exibição e no ID da exibição?

10

Posso carregar uma visualização com $view = Views::getView('my_view_id');, mas como uso esse objeto para carregar o display_title ou dizer uma matriz que contém informações, incluindo o nome para exibição?

Nota: Isso não deve ser confundido com o carregamento do título da tela que pode ser usado ao imprimir a exibição, pois existe um método para isso ( getTitle()).

Webdrips
fonte

Respostas:

17

Depois de ler os documentos ( https://api.drupal.org/api/drupal/core!modules!views!src!ViewExecutable.php/class/ViewExecutable/8 ), tentei o seguinte (que funcionou):

$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: Eu uso a função de renderização em um objeto TranslatableMarkup , é isso que a função pluginTitle retorna. Poderia ser possível usar outras funções lá, como, por exemplo, getUntranslatedString
NB2: Eu não entendi o OP. :-) Comentou a parte defeituosa do código, que retorna o título do plug-in de exibição, e não o título da exibição, conforme solicitado. NB3: Eu entendi mal o PO. NOVAMENTE! :-) Comentou a parte defeituosa do código, que retorna o título da tela, e não o nome da tela conforme solicitado. Para minha defesa, essa propriedade é rotulada como 'Nome de exibição' e seu nome 'display_title' (conforme mencionado no OP).

Exemplo de captura de tela do Views:

insira a descrição da imagem aqui

E um script de teste que obtém o título da tela (com a saída):

insira a descrição da imagem aqui

Felicidades!

Stefanos Petrakis
fonte
Porra, eu estava perdendo a última linha ... obrigado por isso. No momento, estou recebendo o título anotado do meu plug-in de exibição personalizado. Talvez esteja faltando alguma configuração no meu plug-in de exibição.
Webrips
Olá. Então, o que você recebe exatamente? Como assim, o título anotado? Na função pluginTitle, recebi um objeto TranslatableMarkup, você está conseguindo algo mais lá?
Stefanos Petrakis
Eu tenho um plug-in de exibição de visualizações personalizadas, conforme descrito aqui: api.drupal.org/api/drupal/… . É anotado com @ViewsDisplay, que inclui um título. Esse título é o que estou voltando com a última linha.
Webrips
Sua própria implementação, eu acho. Você implementou / substituiu a função pluginTitle?
Stefanos Petrakis
Corrigi-lo é uma implementação personalizada, mas não, eu não implementar / substituir pluginTitle ()
Webdrips
1

O código a seguir depende do 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 obter o título de exibição, é necessário apenas o seguinte código.

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