如何从视图ID和显示ID获得显示名称?


10

我可以使用加载视图$view = Views::getView('my_view_id');,但是如何使用该对象加载display_title或说一个包含包含显示名称的信息的数组?

注意:不要将其与加载打印视图时可能使用的显示标题混淆,因为有一种方法可用于(getTitle())。

Answers:


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对象上使用了render函数,这就是pluginTitle函数返回的内容。在那里可以使用其他功能,例如getUntranslatedString
NB2:我误解了OP。:-)注释掉了代码的错误部分,该部分返回了显示插件的标题,而不是请求的显示标题。NB3:我误会了OP。再次!:-)注释掉了代码的错误部分,该部分返回了显示器的标题,而不是请求的显示器名称。出于我的辩护,该属性被标记为“显示名称”,其名称为“ display_title”(如OP中所述)。

Views示例的屏幕截图:

在此处输入图片说明

还有一个测试脚本,该脚本获取显示的标题(带有输出):

在此处输入图片说明

干杯!


该死,我错过了最后一行...谢谢。我目前正在获得自定义显示插件的带注释的标题,因此也许我的显示插件中缺少某些设置。
Webdrips

嘿。那么,您究竟得到了什么?你是什​​么意思?从pluginTitle函数中,我得到了一个TranslatableMarkup对象,在那里还有其他东西吗?
Stefanos Petrakis

我有一个自定义视图显示这里描述插件:api.drupal.org/api/drupal/...。它用@ViewsDisplay注释,其中包括标题。该标题是我最后一行返回的内容。
Webdrips

我认为是您自己的实现。您是否已实现/覆盖pluginTitle函数?
Stefanos Petrakis

纠正它是一个自定义实现,但是不,我没有实现/覆盖pluginTitle()
Webdrips'April'9

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();
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.