diff --git a/core/modules/taxonomy/src/TermViewsData.php b/core/modules/taxonomy/src/TermViewsData.php index 469c3e83583fccad9b3ec1bed2ae4fdba8536e60..6cade9a1baebed018ab97c9eee9cf308d2242b1b 100644 --- a/core/modules/taxonomy/src/TermViewsData.php +++ b/core/modules/taxonomy/src/TermViewsData.php @@ -66,7 +66,7 @@ public function getViewsData() { ]; $data['taxonomy_term_field_data']['vid']['help'] = $this->t('Filter the results of "Taxonomy: Term" to a particular vocabulary.'); - unset($data['taxonomy_term_field_data']['vid']['field']); + $data['taxonomy_term_field_data']['vid']['field']['help'] = t('The vocabulary name.'); $data['taxonomy_term_field_data']['vid']['argument']['id'] = 'vocabulary_vid'; unset($data['taxonomy_term_field_data']['vid']['sort']); diff --git a/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml new file mode 100644 index 0000000000000000000000000000000000000000..ec5ae2dacb847e2d1db35a680530d8ea14987900 --- /dev/null +++ b/core/modules/taxonomy/tests/modules/taxonomy_test_views/test_views/views.view.test_taxonomy_vid_field.yml @@ -0,0 +1,163 @@ +langcode: en +status: true +dependencies: + module: + - taxonomy + - user +id: test_taxonomy_vid_field +label: test_taxonomy_vid_field +module: views +description: '' +tag: '' +base_table: taxonomy_term_field_data +base_field: tid +core: 8.x +display: + default: + display_plugin: default + id: default + display_title: Master + position: 0 + display_options: + access: + type: perm + options: + perm: 'access content' + cache: + type: tag + options: { } + query: + type: views_query + options: + disable_sql_rewrite: false + distinct: false + replica: false + query_comment: '' + query_tags: { } + exposed_form: + type: basic + options: + submit_button: Apply + reset_button: false + reset_button_label: Reset + exposed_sorts_label: 'Sort by' + expose_sort_order: true + sort_asc_label: Asc + sort_desc_label: Desc + pager: + type: full + options: + items_per_page: 10 + offset: 0 + id: 0 + total_pages: null + expose: + items_per_page: false + items_per_page_label: 'Items per page' + items_per_page_options: '5, 10, 25, 50' + items_per_page_options_all: false + items_per_page_options_all_label: '- All -' + offset: false + offset_label: Offset + tags: + previous: '‹ Previous' + next: 'Next ›' + first: '« First' + last: 'Last »' + quantity: 9 + style: + type: default + options: + grouping: { } + row_class: '' + default_row_class: true + uses_fields: false + row: + type: fields + options: + inline: { } + separator: '' + hide_empty: false + default_field_elements: true + fields: + vid: + id: vid + table: taxonomy_term_field_data + field: vid + relationship: none + group_type: group + admin_label: '' + label: '' + exclude: false + alter: + alter_text: false + text: '' + make_link: false + path: '' + absolute: false + external: false + replace_spaces: false + path_case: none + trim_whitespace: false + alt: '' + rel: '' + link_class: '' + prefix: '' + suffix: '' + target: '' + nl2br: false + max_length: 0 + word_boundary: true + ellipsis: true + more_link: false + more_link_text: '' + more_link_path: '' + strip_tags: false + trim: false + preserve_tags: '' + html: false + element_type: '' + element_class: '' + element_label_type: '' + element_label_class: '' + element_label_colon: false + element_wrapper_type: '' + element_wrapper_class: '' + element_default_classes: true + empty: '' + hide_empty: false + empty_zero: false + hide_alter_empty: true + click_sort_column: target_id + type: entity_reference_label + settings: + link: false + group_column: target_id + group_columns: { } + group_rows: true + delta_limit: 0 + delta_offset: 0 + delta_reversed: false + delta_first_last: false + multi_type: separator + separator: ', ' + field_api_classes: false + entity_type: taxonomy_term + entity_field: vid + plugin_id: field + filters: { } + sorts: { } + header: { } + footer: { } + empty: { } + relationships: { } + arguments: { } + display_extenders: { } + cache_metadata: + max-age: -1 + contexts: + - 'languages:language_content' + - 'languages:language_interface' + - url.query_args + - user.permissions + tags: { } diff --git a/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php b/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php new file mode 100644 index 0000000000000000000000000000000000000000..2fde283e32512efd5b342c6903e04293b7d92335 --- /dev/null +++ b/core/modules/taxonomy/tests/src/Kernel/Views/TaxonomyFieldVidTest.php @@ -0,0 +1,92 @@ +installEntitySchema('taxonomy_term'); + $this->installEntitySchema('user'); + $this->installConfig(['filter']); + + /** @var \Drupal\taxonomy\Entity\Vocabulary $vocabulary */ + $vocabulary = $this->createVocabulary(); + $this->term1 = $this->createTerm($vocabulary); + + // Create user 1 and set is as the logged in user, so that the logged in + // user has the correct permissions to view the vocabulary name. + $this->adminUser = User::create(['name' => $this->randomString()]); + $this->adminUser->save(); + $this->container->get('current_user')->setAccount($this->adminUser); + + ViewTestData::createTestViews(get_class($this), ['taxonomy_test_views']); + } + + /** + * Tests the field handling for the Vocabulary ID. + */ + public function testViewsHandlerVidField() { + /** @var \Drupal\Core\Render\RendererInterface $renderer */ + $renderer = \Drupal::service('renderer'); + + $view = Views::getView('test_taxonomy_vid_field'); + $this->executeView($view); + + $actual = $renderer->executeInRenderContext(new RenderContext(), function () use ($view) { + return $view->field['vid']->advancedRender($view->result[0]); + }); + $vocabulary = Vocabulary::load($this->term1->bundle()); + $expected = $vocabulary->get('name'); + + $this->assertEquals($expected, $actual); + } + +}