Bagaimana saya bisa mendapatkan nama tampilan dari ID tampilan dan ID tampilan?

10

Saya dapat memuat tampilan $view = Views::getView('my_view_id');, tetapi bagaimana cara menggunakan objek itu untuk memuat display_title atau mengatakan array yang berisi informasi termasuk nama tampilan?

Catatan: Ini tidak harus bingung dengan memuat judul tampilan yang mungkin digunakan saat mencetak tampilan, karena ada metode untuk itu ( getTitle()).

Drip web
sumber

Jawaban:

17

Setelah membaca dokumen tersebut ( https://api.drupal.org/api/drupal/core!modules!views!src!ViewExecutable.php/class/ViewExecutable/8 ), saya mencoba yang berikut (yang berfungsi):

$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: Saya menggunakan membuat fungsi pada TranslatableMarkup objek, ini adalah apa fungsi kembali pluginTitle. Mungkin bisa menggunakan fungsi lain di sana, seperti, mis. GetUntranslatedString
NB2: Saya salah mengerti OP. :-) Mengomentari bagian kode yang salah, yang mengembalikan judul plugin display, dan bukan judul display seperti yang diminta. NB3: Saya salah paham tentang OP. LAGI! :-) Mengomentari bagian kode yang salah, yang mengembalikan judul tampilan, dan bukan nama tampilan seperti yang diminta. Untuk membela saya, properti itu diberi label 'Nama tampilan' dan namanya 'display_title' (seperti yang disebutkan dalam OP).

Tangkapan layar dari Tampilan contoh:

masukkan deskripsi gambar di sini

Dan skrip uji yang mendapatkan judul tampilan (dengan output):

masukkan deskripsi gambar di sini

Bersulang!

Stefanos Petrakis
sumber
Sungguh, aku melewatkan baris terakhir ... terima kasih untuk itu. Saat ini saya mendapatkan judul yang dianotasi untuk plugin tampilan khusus saya, jadi mungkin saya kehilangan beberapa pengaturan dalam plugin display saya.
Webdrips
Hai yang disana. Jadi, apa tepatnya yang Anda dapatkan? Apa maksud Anda judul beranotasi? Dari fungsi pluginTitle, saya mendapat objek TransknownMarkup, apakah Anda mendapatkan sesuatu yang lain di sana?
Stefanos Petrakis
Saya memiliki plugin tampilan tampilan kustom seperti yang dijelaskan di sini: api.drupal.org/api/drupal/… . Ini dijelaskan dengan @ViewsDisplay, yang mencakup judul. Judul itulah yang saya dapatkan kembali dengan baris terakhir.
Webdrips
Saya rasa implementasi Anda sendiri. Sudahkah Anda menerapkan / menimpa fungsi pluginTitle?
Stefanos Petrakis
Benar itu implementasi khusus, tapi tidak, saya tidak mengimplementasikan / menimpa pluginTitle ()
Webdrips
1

Kode berikut bergantung pada modul ctools_views.

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

Untuk mendapatkan judul tampilan hanya membutuhkan kode berikut.

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