Come posso ottenere un nome visualizzato dall'ID vista e dall'ID visualizzazione?


10

Posso caricare una vista con $view = Views::getView('my_view_id');, ma come posso usare quell'oggetto per caricare display_title o dire un array contenente informazioni incluso il nome visualizzato?

Nota: questo non deve essere confuso con il caricamento del titolo del display che potrebbe essere utilizzato durante la stampa della vista, poiché esiste un metodo per quello ( getTitle()).

Risposte:


17

Dopo aver letto il documento ( https://api.drupal.org/api/drupal/core!modules!views!src!ViewExecutable.php/class/ViewExecutable/8 ), ho provato quanto segue (che ha funzionato):

$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: utilizzo la funzione di rendering su un oggetto TranslatableMarkup , questo è ciò che restituisce la funzione pluginTitle. Potrebbe essere possibile utilizzare altre funzioni lì, come ad esempio getUntranslatedString
NB2: ho frainteso l'OP. :-) Ha commentato la parte difettosa del codice, che restituisce il titolo del plug-in di visualizzazione e non il titolo del display come richiesto. NB3: ho frainteso il PO. ANCORA! :-) Commentato la parte difettosa del codice, che restituisce il titolo del display e non il nome del display come richiesto. A mio avviso, quella proprietà è etichettata "Display name" e il suo nome "display_title" (come menzionato nell'OP).

Screenshot dall'esempio di Views:

inserisci qui la descrizione dell'immagine

E uno script di test che ottiene il titolo del display (con l'output):

inserisci qui la descrizione dell'immagine

Saluti!


Accidenti mi mancava l'ultima riga ... grazie per quello. Attualmente sto ricevendo il titolo annotato per il mio plug-in di visualizzazione personalizzato, quindi forse mi manca qualche impostazione nel mio plug-in di visualizzazione.
Webdrip

Ehilà. Quindi, cosa ottieni esattamente? Cosa intendi con il titolo annotato? Dalla funzione pluginTitle, ho ottenuto un oggetto TranslatableMarkup, stai ottenendo qualcos'altro lì?
Stefanos Petrakis,

Ho un plug-in di visualizzazione delle visualizzazioni personalizzato come descritto qui: api.drupal.org/api/drupal/… . È annotato con @ViewsDisplay, che include un titolo. Quel titolo è quello che sto tornando con l'ultima riga.
Webdrip

La tua stessa implementazione credo. Allora hai implementato / annullato la funzione pluginTitle?
Stefanos Petrakis,

Corretta è un'implementazione personalizzata, ma no non ho implementato / sovrascritto pluginTitle ()
Webdrips

1

Il codice seguente dipende dal modulo ctools_views.

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

Per ottenere il titolo visualizzato è necessario solo il seguente codice.

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayName = $view->getTitle();
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.