Làm cách nào tôi có thể nhận được tên hiển thị từ ID xem và ID hiển thị?


9

Tôi có thể tải chế độ xem với $view = Views::getView('my_view_id');, nhưng làm cách nào để sử dụng đối tượng đó để tải display_title hoặc nói một mảng chứa thông tin bao gồm tên hiển thị?

Lưu ý: Điều này không được nhầm lẫn với việc tải tiêu đề của màn hình có thể được sử dụng khi in chế độ xem, vì có một phương pháp cho điều đó ( getTitle()).

Câu trả lời:


16

Sau khi đọc thông qua các tài liệu ( https://api.drupal.org/api/drupal/core!modules!view!src!ViewExecutable.php/ class / ViewExecutable / 8 ), tôi đã thử cách sau (đã hoạt động):

$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: Tôi sử dụng làm chức năng trên TranslatableMarkup đối tượng, đây là những gì trở về chức năng pluginTitle. Có thể sử dụng các chức năng khác ở đó, như, ví dụ getUntranslatedString
NB2: Tôi đã hiểu nhầm OP. :-) Đã nhận xét phần bị lỗi của mã, trả về tiêu đề của plugin hiển thị và không phải tiêu đề của màn hình theo yêu cầu. NB3: Tôi đã hiểu nhầm OP. LẦN NỮA! :-) Đã nhận xét phần bị lỗi của mã, trả về tiêu đề của màn hình và không phải tên của màn hình theo yêu cầu. Để bảo vệ tôi, tài sản đó được gắn nhãn 'Tên hiển thị' và tên của nó 'display_title' (như đã được đề cập trong OP).

Ảnh chụp màn hình từ ví dụ Lượt xem:

nhập mô tả hình ảnh ở đây

Và một kịch bản thử nghiệm có được tiêu đề của màn hình (với đầu ra):

nhập mô tả hình ảnh ở đây

Chúc mừng!


Tôi đã bỏ lỡ dòng cuối cùng ... cảm ơn vì điều đó. Tôi hiện đang nhận được tiêu đề chú thích cho plugin hiển thị tùy chỉnh của mình, vì vậy có lẽ tôi đang thiếu một số cài đặt trong plugin hiển thị của mình.
Webdrips

Này đó. Vì vậy, những gì bạn nhận được chính xác? Bạn có ý nghĩa gì với tiêu đề chú thích? Từ chức năng pluginTitle, tôi đã nhận được một đối tượng TranslizableMarkup, bạn có nhận được thứ gì khác ở đó không?
Stefanos Petrakis

Tôi có một plugin hiển thị lượt xem tùy chỉnh như được mô tả ở đây: api.drupal.org/api/drupal/ . Nó được chú thích bằng @ViewsDisplay, bao gồm một tiêu đề. Tiêu đề đó là những gì tôi đang trở lại với dòng cuối cùng.
Webdrips

Việc thực hiện của riêng bạn tôi nghĩ. Bạn đã thực hiện / ghi đè chức năng pluginTitle chưa?
Stefanos Petrakis

Chính xác đó là cách triển khai tùy chỉnh, nhưng không, tôi không thực hiện / ghi đè pluginTitle ()
Webdrips

1

Đoạn mã sau phụ thuộc vào mô đun ctools_view.

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

Để có được tiêu đề hiển thị chỉ cần mã sau đây.

$view = \Drupal\views\Views::getView('your_view_id');
$view->setDisplay('your_display_id');
$displayName = $view->getTitle();
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.