Skip to content
Snippets Groups Projects
Commit bad2aea4 authored by catch's avatar catch
Browse files

Issue #2491875 by joachim, xjm, Xano, alexpott: EntityViewsData adds...

Issue #2491875 by joachim, xjm, Xano, alexpott: EntityViewsData adds Operations links to all entities, which won't work if the entity type has no list builder, leading to WSOD on some views
parent 6f4690d4
No related branches found
No related tags found
2 merge requests!7452Issue #1797438. HTML5 validation is preventing form submit and not fully...,!789Issue #3210310: Adjust Database API to remove deprecated Drupal 9 code in Drupal 10
......@@ -152,6 +152,9 @@ public function getViewsData() {
}
}
// Entity types must implement a list_builder in order to use Views'
// entity operations field.
if ($this->entityType->hasListBuilderClass()) {
$data[$base_table]['operations'] = array(
'field' => array(
'title' => $this->t('Operations links'),
......@@ -159,6 +162,7 @@ public function getViewsData() {
'id' => 'entity_operations',
),
);
}
// Setup relations to the revisions/property data.
if ($data_table) {
......
......@@ -774,6 +774,26 @@ public function testEntityLinksJustEditForm() {
$this->assertEquals('entity_link_edit', $data['entity_test']['edit_entity_test']['field']['id']);
}
/**
* @covers ::getViewsData
*/
public function testGetViewsDataWithoutEntityOperations() {
// Make sure there is no list builder. The API does not document is
// supports resetting entity handlers, so this might break in the future.
$this->baseEntityType->setListBuilderClass(NULL);
$data = $this->viewsData->getViewsData();
$this->assertArrayNotHasKey('operations', $data[$this->baseEntityType->getBaseTable()]);
}
/**
* @covers ::getViewsData
*/
public function testGetViewsDataWithEntityOperations() {
$this->baseEntityType->setListBuilderClass('\Drupal\Core\Entity\EntityListBuilder');
$data = $this->viewsData->getViewsData();
$this->assertSame('entity_operations', $data[$this->baseEntityType->getBaseTable()]['operations']['field']['id']);
}
/**
* Tests views data for a string field.
*
......
......@@ -313,3 +313,21 @@ function _views_update_argument_map($displays) {
/**
* @} End of "addtogroup updates-8.0.0-beta".
*/
/**
* @addtogroup updates-8.0.0-rc
* @{
*/
/**
* Clear caches to fix entity operations field.
*/
function views_update_8003() {
// Empty update to cause a cache flush so that views data is rebuilt. Entity
// types that don't implement a list builder cannot have the entity operations
// field.
}
/**
* @} End of "addtogroup updates-8.0.0-rc".
*/
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment