diff -u b/core/modules/views_ui/src/Controller/ViewsUIController.php b/core/modules/views_ui/src/Controller/ViewsUIController.php --- b/core/modules/views_ui/src/Controller/ViewsUIController.php +++ b/core/modules/views_ui/src/Controller/ViewsUIController.php @@ -20,6 +20,7 @@ use Symfony\Component\HttpFoundation\JsonResponse; use Drupal\Core\Ajax\AjaxResponse; use Drupal\Core\Ajax\ReplaceCommand; +use Drupal\Core\Render\RendererInterface; /** * Returns responses for Views UI routes. @@ -34,13 +35,23 @@ protected $viewsData; /** + * The Renderer service. + * + * @var \Drupal\Core\Render\RendererInterface + */ + protected $renderer; + + /** * Constructs a new \Drupal\views_ui\Controller\ViewsUIController object. * * @param \Drupal\views\ViewsData views_data * The Views data cache object. + * @param \Drupal\Core\Render\RendererInterface $renderer + * The Renderer service. */ - public function __construct(ViewsData $views_data) { + public function __construct(ViewsData $views_data, RendererInterface $renderer) { $this->viewsData = $views_data; + $this->renderer = $renderer; } /** @@ -48,7 +59,8 @@ */ public static function create(ContainerInterface $container) { return new static( - $container->get('views.views_data') + $container->get('views.views_data'), + $container->get('renderer') ); } @@ -93,11 +105,12 @@ foreach ($views as $view) { $rows[$field_name]['data'][1][] = $this->l($view, new Url('entity.view.edit_form', array('view' => $view))); } - $rows[$field_name]['data'][1] = [ + $render_array = [ '#theme' => 'item_list', '#items' => $rows[$field_name]['data'][1], '#context' => ['list_style' => 'comma-list'], ]; + $rows[$field_name]['data'][1] = $this->renderer->renderPlain($render_array); } // Sort rows by field name. only in patch2: unchanged: --- /dev/null +++ b/core/modules/views_ui/src/Tests/ReportFieldsTest.php @@ -0,0 +1,60 @@ +drupalGet('admin/reports/fields/views-fields'); + $this->assertRaw('Used in views', 'Title appears correctly'); + $this->assertRaw('No fields have been used in views yet.', 'No results message appears correctly.'); + + // Set up the field_test field. + $field_storage = FieldStorageConfig::create([ + 'field_name' => 'field_test', + 'type' => 'integer', + 'entity_type' => 'entity_test', + ]); + $field_storage->save(); + + $field = FieldConfig::create([ + 'field_name' => 'field_test', + 'entity_type' => 'entity_test', + 'bundle' => 'entity_test', + ]); + $field->save(); + + $this->drupalGet('admin/reports/fields/views-fields'); + // Assert that the newly created field appears in the overview. + $this->assertRaw('field_test', 'Field name appears correctly'); + $this->assertRaw('>test_field_field_test', 'View name appears correctly'); + $this->assertRaw('Used in views', 'Title appears correctly'); + } + +}