web-dev-qa-db-ja.com

ビューIDとディスプレイIDから表示名を取得するにはどうすればよいですか?

$view = Views::getView('my_view_id');を使用してビューをロードできますが、そのオブジェクトを使用してdisplay_titleをロードしたり、表示名を含む情報を含む配列を言ったりするにはどうすればよいですか?

注:これには、ビューの印刷時に使用される可能性のあるディスプレイのタイトルのロードと混同しないでください。そのためのメソッド(getTitle())があるためです。

9
Webdrips

ドキュメントを読んだ後( 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'];

N.B.1: TranslatableMarkup オブジェクトでrender関数を使用します。これはpluginTitle関数が返すものです。そこでは、他の機能をそこで使用することが可能かもしれません。 getUntranslatedString
N.B.2:OPを誤解しました。 :-)要求されたディスプレイのタイトルではなく、ディスプレイプラグインのタイトルを返すコードの不完全な部分をコメント化しました。 N.B.3:OPを誤解した。再び! :-)要求されたディスプレイの名前ではなく、ディスプレイのタイトルを返すコードの不完全な部分をコメント化しました。私の弁護のために、そのプロパティには「表示名」とその名前「display_title」が付けられています(OPで言及したとおり)。

ビューの例のスクリーンショット:

enter image description here

ディスプレイのタイトルを取得するテストスクリプト(出力付き):

enter image description here

乾杯!

16

次のコードは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();
1
NewZeal