Как получить отображаемое имя из идентификатора вида и идентификатора дисплея?

10

Я могу загрузить представление $view = Views::getView('my_view_id');, но как я могу использовать этот объект для загрузки display_title или сказать массив, содержащий информацию, включая отображаемое имя?

Примечание. Это не следует путать с загрузкой заголовка дисплея, который может быть использован при печати представления, поскольку для этого есть метод ( getTitle()).

Webdrips
источник

Ответы:

17

Прочитав документы ( https://api.drupal.org/api/drupal/core!modules!views!src!ViewExecutable.php/class/ViewExecutable/8 ), я попробовал следующее (что сработало):

$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: я использую функцию рендера для объекта TranslatableMarkup , это то, что возвращает функция pluginTitle. Там можно было бы использовать другие функции, например, getUntranslatedString
NB2: я неправильно понял OP. :-) Закомментировал неисправную часть кода, которая возвращает заголовок плагина дисплея, а не заголовок дисплея, как было запрошено. NB3: я неправильно понял ОП. СНОВА! :-) Закомментировал неисправную часть кода, которая возвращает заголовок дисплея, а не имя дисплея, как было запрошено. В мою защиту это свойство помечено как «Отображаемое имя», а его имя - «display_title» (как упоминалось в ОП).

Снимок экрана из примера Views:

введите описание изображения здесь

И тестовый скрипт, который получает заголовок дисплея (с выводом):

введите описание изображения здесь

Ура!

Стефанос Петракис
источник
Черт, я пропустил последнюю строчку ... спасибо за это. В настоящее время я получаю аннотированный заголовок для моего пользовательского плагина отображения, поэтому, возможно, мне не хватает некоторых настроек в моем плагине отображения.
Webdrips
Привет всем. Итак, что вы получаете именно? Что вы имеете в виду аннотированный заголовок? Из функции pluginTitle я получил объект TranslatableMarkup, вы получаете что-то еще там?
Стефанос Петракис
У меня есть плагин для отображения пользовательских представлений, как описано здесь: api.drupal.org/api/drupal/… . Он аннотирован @ViewsDisplay, который включает заголовок. Это название - то, что я получаю с последней строки.
Webdrips
Ваша собственная реализация, я считаю. Вы реализовали / переопределили функцию pluginTitle тогда?
Стефанос Петракис
Исправьте, это пользовательская реализация, но нет, я не реализовал / переопределил pluginTitle ()
Webdrips
1

Следующий код зависит от модуля ctools_views.

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

Для получения отображаемого заголовка требуется только следующий код.

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayName = $view->getTitle();
NewZeal
источник